PDA

Volledige versie bekijken : Variabelen van het ene niveau naar het andere


Leiber
%Europe/Berlin %809 %2007, 19:25
Hallo,

In AS3 zijn er geen zogenaamde 'globale variabelen' meer. Nu vraag ik mij dus af: hoe verander ik dan een waarde op een bepaald moment tijdens het afspelen van een bepaalde timeline?

Voorbeeld:

Ik heb een bepaalde variabele die steeds in grootte fluctueert. Wanneer de variabele boven een bepaalde waarde komt, moet movieclip X worden afgespeeld. Op dat moment wordt er niet meer gelet op de grootte van de variabele, maar wordt gewoon de movieclip afgespeeld. Als deze klaar is, wordt deze weer afgespeeld, maar alleen als de variabele weer groter wordt dan de door mij bepaalde waarde.

Dus iets als:

if (n1 > 40 && bla1Play==false) {

// als de waarde van n1 boven de 40 uitkomt moet hij MovieClip "bla1" gaan spelen
this.bla1.gotoAndPlay(1);
bla1Play=true;
}

Op het moment dat de movieclip bla1 klaar is, moet de bla1Play weer op "true" worden gezet. Hoe ga ik dit doen met AS3? Ik heb inmiddels als een class aangemaakt, maar verder kom ik niet..!

Alvast bedankt voor de reacties!

B-Mantis
%Europe/Berlin %823 %2007, 19:45
zorg ervoor dat je een document class gebruikt. Die blijft persistent door je hele flash project. Voeg daar een event listener toe;


addEventListener(Event.ENTER_FRAME, enter_frame);
addEventListener("voeg_toe", voeg_listener_toe);

private function enter_frame(e:Event):void {
if (nr1 ++ > 40) {
bla1.gotoAndPlay(1);
removeEventListener(Event.ENTER_FRAME,enter_frame) ;
trace("event listener verwijderd!");
}
}

private function voeg_listener_toe(e:Event):void {
addEventListener(Event.ENTER_FRAME, enter_frame);
trace("event listener toegevoegd!");
}


nu hoef je alleen nog maar aan het eind van je movieclip bla1 dit toe te voegen:


dispatchEvent(new Event("voeg_toe",true));

Leiber
%Europe/Berlin %934 %2007, 22:26
Is er ook een manier om dit zonder een documentclass op te lossen? Eerlijk gezegd gaat me dit op dit moment boven de pet. In de toekomst zal ik dit toch eens moeten aansnijden, maar nu liever nog niet.

B-Mantis
%Europe/Berlin %981 %2007, 23:33
waarom zou je het zonder doen? als je al met classes bezig bent, kun je ook gewoon de document class gebruiken. Het enige verschil is dat de document class eigelijk je root object is. maak gewoon een simpele document class, zet de functies op de juiste plaats, en de twee addEventListener() functies in de constructor.