Sto facendo una piccola partita in as3.Come eliminare tutti i listener di eventi contemporaneamente in AS3
Il gioco contiene 10 livelli.
Quando inserisco 1 livello, tutto va bene. Ma quando inserisco il secondo livello (frame) i listener di eventi dal primo frame sono ancora funzionanti e ricevo un avviso che dice "Impossibile accedere a un oggetto di riferimento objct null". Questo perché io elimino ogni oggetto del primo livello e aggiungo gli oggetti dal secondo stadio.
Ho provato a usare removeEventListeners, ma non funziona, perché ENTER_FRAME gli ascoltatori funzionano ancora una volta dopo aver rimosso l'evento ascoltatori.
Ho provato a utilizzare diversi frame per diversi livelli, bit non funziona. Inoltre ho provato ad usare 1 frmae per tutti e 10 i frame, ma ricevo molti avvertimenti e il Flash Loader è sovraccarico.
Come posso passare attraverso i livelli (avanti e indietro)? Grazie in anticipo.
addEventListener(Event.ENTER_FRAME, subtracting2);
arrListeners.pop(); // poping it out of the array because it will be deleted after the count reaches 0
function subtracting2 (e:Event):void
{
count--;
var FAcoef:Number = count/30; //
FadeAway.alpha = FAcoef; // Some effect like FadeAway
setChildIndex(FadeAway, numChildren - 1); //
if(count == 0)
{
setChildIndex(FadeAway, 0);
removeEventListener(Event.ENTER_FRAME, subtracting2);
}
}
Non è possibile. Se non vuoi disturbarti con eventi (** asincroni **), prova [Segnali AS3] (https://github.com/robertpenner/as3-signals) (** sincrono **). – Florent
Forse non dovresti aggiungere listener di eventi in un loop di enterframe ... – Kodiak
Devo aggiungere ENTER_FRAME per verificare se il livello è passato e per essere sicuro che le leggi di gioco non siano infranti. Non deve essere la mia idea che è giusto (con rimuovere EventListeners). Finché funziona bene, accetterò qualsiasi idea – Stefan4024