Da tempo mi ero posto questo problema:
come muovere un movieclip lungo una guida\percorso\path che dir si voglia direttamente da actionscript?
Dovendo affrontare il problema per fini lavorativi ho scandagliato la rete finchè ho trovato una proto su layer51 del prode senocular.
“Problema risolto” direte voi, naaa. Ho tradotto la proto in una classe, niente di chè, ma così facendo è (a mio avviso) pi√π utilizzabile.
Intanto scaricatevi la classe
Ok, come si usa?
importo la classe e creo un percorso con le funzioni che emulano le api
import it.utils.Path;
var myPath:Path = new Path(0,0);
//parto da x=0 e y=0
myPath.lineTo(100,0);//creo una linea retta
myPath.circleCWTo(100,100,0.5);
//creo una curva in senso orario (ClockWise).
//il terzo valore oscilla tra 0 e 1
//e stabilisce l'ampiezza della curva
myPath.lineTo(0,100);
myPath.circleCCWTo(0,0,0.5);
//torno al punto di partenza con una
//curva creata in senso antiorario
ok, adesso guardiamo il nostro percorso disegnandolo su un mc con la funzione draw
var percorso:MovieClip = this.createEmptyMovieClip("path_container",0);
percorso.lineStyle(0,0x000000,100);
//imposto la linea con la quale saràdisegnato il percorso
myPath.draw(percorso);
bello no?
ora da flash creiamo un nuovo simbolo movieclip, disegnamoci un pacman con la bocca verso l’alto, lo chiamerò “pacman” userò lo stesso nome per il concatenamento.
tornando allo script….
facciamo girare il pacman sul percorso disegnato precedentemente:
var pac:MovieClip = this.attachMovie("pacman","pacman",1);
var traverse_perc:Number=0;
pac.onEnterFrame = function(){
myPath.traverse(pac,traverse_perc%100/100, true);
/*
traverse è il metodo di Path
che permette di muoversi attraverso il path creato,
gli si passano 3 parametri: il mc che deve muoversi,
il punto di destinazione del mc (compreso tra 0 e 1,
dove 0 è l'inizio e 1 la fine), un valore booleano che
indica se orientare il clip alla direzione del percorso
o meno (in questo caso il nostro pacman seguiràla
direzione del path con la bocca)*/
traverse_perc++;
}
Presto pubblicherò anche un fla con degli esempi pratici…stay tuned
Tags: Source