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