In realtà è più facile a farsi che a dirsi. :)
In base alla foto, e quindi a quello che presuppongo tu debba ottenere, la soluzione da adottare può essere più semplice. Nel senso che si tratta di un numero finito di oggetti posizionati in punti prestabiliti che è quindi conveniente preimpostare nel progetto.
Per ogni mappa puoi avere una MovieClip delle frecce contenente diversi frame con diversi livelli ognuno dei quali avrà una delle tue frecce sovrapposta o meno alle altre nella linea temporale, dipendentemente da come le vorrai visualizzare. A questo punto al click del mouse (probabilmente sulla mappa e non su qualsiasi altro oggetto) non dovrai fare altro che una chiamata a mappa_mc.frecce_mc.gotoAndStop(“nomedelframe”)
o mappa_mc.frecce_mc.nextFrame()
.
Quindi, presupposto tu abbia diverse mappe, una volta dato il nome ad ogni istanza delle MovieClip dal pannello delle proprietà (mappai_mc
) e alla MovieClip delle frecce (frecce_mc
, stesso nome per tutte quelle che andrai a definire all’interno delle varie mappe), andrai a scrivere su un livello della timeline principale dedicato al codice:
mappa1_mc.addEventListener(MouseEvent.CLICK, mappaClickHandler);
mappa2_mc.addEventListener(MouseEvent.CLICK, mappaClickHandler);
mappa3_mc.addEventListener(MouseEvent.CLICK, mappaClickHandler);
function mappaClickHandler(event:MouseEvent):void{
event.currentTarget.frecce_mc.nextFrame();
}
Ovviamente ricorda lo stop()
sul primo frame di frecce_mc e inserisci il primo frame vuoto e un ultimo frame vuoto con il codice gotoAndStop(1)
, cosicché ti consenta di ricominciare una volta terminata la sequenza dei click.
Per scrivere poi in una forma più elegante :) ed indipendente dal numero di mappe che andrai ad inserire:
const MAPPA:String = “mappa”;
const SUFFIX:String = “_mc”;
function addListeners(container:MovieClip){
//numChildren dovrebbe ritornarti il numero di mappe (sarebbe conveniente che il container abbia solo mappe)
for (var i:Number = 1; i <= container.numChildren; i++){
var instanceName:String = MAPPA + i.toString() + SUFFIX;
//con hasOwnProperty(instanceName) verifichiamo che non ci siano oggetti diversi da quelli che ci aspettiamo
//o mappe nominate nel modo sbagliato
if (container.hasOwnProperty(instanceName)){
//qui in sostanza è mappai_mc che si mette in ascolto dell’evento Click del mouse
container[instanceName].addEventListener(MouseEvent.CLICK, mappaClickHandler);
}
}
}
function mappaClickHandler(event:MouseEvent):void{
//qualunque sia la mappa coinvolta, al suo interno troveremo comunque una istanza opportunamente nominata frecce_mc con le sue frecce
event.currentTarget.frecce_mc.nextFrame();
}
addListeners(this); //dipendentemente da quale MovieClip contiene le mappe
P.S.
In risposta a Fb, puoi utilizzare rapidshare.com ad esempio :)