FLA – Auto movimento

Capita in alcuni siti di fare delle piccole animazioni flash consistenti in una serie di immagini / testi fissi e qualche elemento nel fondo che si muove lentamente, su vari livelli.

Mi è giusto capitata l’occasione ed ho fatto questo veloce action script per regolare il movimento e soprattutto la ricomparsa dell’oggetto nello Stage.

 

Il codice è:

 

function fnStartMove(oggetto:MovieClip,speed:Number,pX:Number,pY:Number,mX:Number,mY:Number){
/*
speed: ogni quanti ms fa uno spostamento
mX: pixel di spostamento orizzontale
mY: pixel di spostamento verticale
*/
oggetto._x = pX;
oggetto._y = pY;
intervallo = setInterval(fnMove,speed,oggetto,mX,mY);
//fnMove(oggetto,mX,mY);
}

function fnMove(oggetto:MovieClip,mX:Number,mY:Number){
oggetto._x += mX;
oggetto._y += mY;
//trace("mX:" + mX + " – mY:" + mY + " – oggettoX:" + oggetto._x + " – oggettoY:" + oggetto._y);
if (oggetto._x > Stage.width)
oggetto._x = 0 – oggetto._width;
if (oggetto._x < -oggetto._width)
oggetto._x = Stage.width;
if (oggetto._y > Stage.height)
oggetto._y = 0 – oggetto._height;
if (oggetto._y < -oggetto._height)
oggetto._y = Stage.height;
updateAfterEvent();
}

 

//test
fnStartMove(mcOggetto,50,0,0,15,5);

fnStartMove(mcOggetto2,50,0,100,10,-5);

 

 

Dovete quindi crearvi un oggetto, fare un linkage con un nome, e richiamare la funzione fnStartMove().

Certamente non è uno script completo e finito, ma può essere una buona base di partenza per divertenti auto-animazioni.

Nell’esempio riportato (codice dopo //test) muovo due oggetti (mcOggetto, mcOggetto2) precreati per lo Stage.

 

Due righe di dettaglio.

La funzione fnStartMove() si occupa di posizionare l’oggetto nella posizione di partenza (pX,pY) e di lanciare il loop del movimento con una velocità pari al parametro passato (speed).

La funzione fnMove() si occupa di spostare l’oggetto e verificare se è completamente uscito dallo stage. Nel caso in cui lo fosse, lo riporta all’inizio dello stage.

 

Loading Facebook Comments ...

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *