Mit forslag til hvordan koden i flash eksekveres er at flash registrerer onRelease og eksekverer onrelease-koden i næste frame hvor flash først eksekverer onEnterFrame() og derefter onRelease(). Hvis det ikke forholder sig sådan hvad sker der så i tilfældet af at onRelease og onEnterFrame blir udført på samme tidspunkt og man sletter onEnterFrame funktionen med delete? kører onEnterFrame funktionen færdig og derefter stopper? Det sidste tilfælde skaber en del komplikationer!!
Hvis nogen kan afklare denne problematik bliver jeg virkelig glad :)
Kan du ikke bare teste det med var pic:Boolean=true; this.onEnterFrame=function(){ if(pic){ trace("piv"); }else{ trace("BRØL"); } } test_mc.onRelease = function() { piv=false; trace("hallo") delete this.onEnterFrame }
Nej for du kan ikke afgører hvornår du skal trykke altså hvornår lige præcis koden for this.onEnterFrame udføres! Formentlig vil koden virke langt de fleste gange men det er ikke nok for hvis man bygger en side med mange events fx et spil kan det være at man rammer det ene tilfælde hvor koderne udføres på samme tid!
Jeg forestiller mig at events faktisk først bliver udført efter næste onEnterFrame eller at flash ikke multitasker dvs kører flere eventfunktioner på samme tidspunkt men udfører dem i rækkefølge!
Det blir lidt fishy men det er da vigtigt at vide i forhold til strukturen i ens program :)
Flash er såvidt jeg ved enkelttrådet, så den laver ikke ting "på samme tid". Derudover er events sikkert prioriterede eller ligger i en eventkø? Under alle omstændigheder er jeg ikke sikker på at du behøver dig bekymre dig synderligt om det?
Flash er enkelttrådet - altid. Der _kan_ ikke gøre to scripts samtidig. Dette kan du for eksempel forsikre dig ved at lave en onEnterFrame med:
trace("a"); trace("b");
Og en knap med:
trace("knap");
"knap" vil _aldrig_ komme imellem "a" og "b" - uanset hvor godt du forsøger at ramme den :)
Dog, vil du være sikker på, at ting kører som de skal, så brug en lidt smartere central event-manager, som kan distribuere forskellige events ud hist og her. Og hvis du for eksempel har noget som ovenstående, så byg det op med en klasse til dette, som har en stop-funktion. Det med, at man fjerner en onEnterFrame et eller andet mærkeligt sted henne kan være ret svært at overskue i længden. Brug AS2 og byg det op i korrekte, logiske klasser :)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.