Ciao a tutti, giocando con lo spostamento di un oggetto ho provato a ricostruire il joystick degli esempi di MX.
Tuttavia anche se apparentemente funziona non risco a controllare la corrispondenza fra il movimento del joystick ed il movimento del mio oggetto.
nello stage posizionate un clip istanziato "c"
poi create una clip pallina istanziato come volete.
ed associate
codice:// premo/rilascio la manopola del joystick on (press) { dragging = true; } on (release, releaseOutside) { dragging = false; } onClipEvent (load) { // velocità per il movimento dell'oggetto vel=5 // variabili per il movimento del joystick con ritorno elastico inity = _y; targety = inity; initx = _x; targetx = initx; elfactor = 0.75; speedfactor = 6; dragging = false; // creazione del braccio del joystick _root.createEmptyMovieClip("linea1", -100); swapDepths(1000); } onClipEvent (enterFrame) { // disegno il braccio seguendo gli spostamenti della pallina _root.linea1.clear(); _root.linea1.lineStyle(3, 0xFF0000, 100); _root.linea1.moveTo(targetx, targety); _root.linea1.lineTo(_x, _y); if (dragging) { // muovo la manopola del joystick secondo lo spostamento del mouse // max spostamento 20 _x = _root._xmouse; if ((_root._xmouse - initx)>20){_x=initx+20} if ((_root._xmouse - initx)<-20){_x=initx-20} _y = _root._ymouse; if ((_root._ymouse - inity)>20){_y=inity+20} if ((_root._ymouse - inity)<-20){_y=inity-20} // Calcolo della rotazione del PAD angolo = Math.atan2(_root._ymouse-inity, _root._xmouse-initx)/(Math.PI/180); // ruoto l'oggetto c _root.c._rotation = angolo; // Determazione della direzione ed avanzamento. _root.c._x+=vel*Math.sin ( Math.PI/180*_root.c._rotation ) _root.c._y-=vel*Math.cos ( Math.PI/180*_root.c._rotation ) // Controllo margini dell'area dove si può spostare "c" if(_root.c._x<272){_root.c._x=573} if(_root.c._x>573){_root.c._x=272} if(_root.c._y<20) {_root.c._y=177} if(_root.c._y>177){_root.c._y= 20} // fine dragging = true } else { // effetto ritorno elastico della manopola joystick diffx = targetx - _x; diffy = targety - _y; oldx = _x; oldy = _y; _x += diffx / speedfactor + speedx * elfactor; _y += diffy / speedfactor + speedy * elfactor; speedx = _x - oldx; speedy = _y - oldy; } }
Provate a controllare io non riesco a sincronizzare.
Grazie Ciao Rempox

Rispondi quotando