PDA

Volledige versie bekijken : stage is null bij ingeladen swf


RickFocus
%Europe/Berlin %849 %2007, 21:23
In een SWF file heb ik een KEY_DOWN EventListener gekoppeld aan de stage:

stage.addEventListener(KeyboardEvent.KEY_DOWN, movePlane);

Dit werkt allemaal prima wanneer ik de swf start als standalone movie.
Wanneer ik echter de movie exporteer en vervolgens de gexporteerde swf inlaad in een andere fla dan krijg ik de melding:

TypeError: Error #1009: Cannot access a property or method of a null object reference.

Dat komt omdat de stage van de extern ingeladen swf null is. Nu is mijn vraag:

- Bestaat er maar 1 stage of hebben zowel de hoofd movie als de ingeladen swf een stage?
- Moet ik de addEeventListener proberen aan de hoofd movie te binden?
- Hoe benader ik mijn externe swf stage in een movie?

Wat ik al geprobeerd heb zijn:

parent.stage.addEventListener.........
this.stage.addEventListener........
this.parent.stage....
etc...

maar kom er niet echt uit. Iemand hier een antwoord op?
thanks.

Wivern
%Europe/Berlin %866 %2007, 21:47
stage is een refferentie van een object naar de Stage waar er maar 1 van is.
Deze refferentie is alleen beschikbaar als het object aan de displaylist is toegevoegd.

Dus je moet even een eventListener toevoegen die luisterd naar de ADDED event toevoegen en in de functie die aangeroepen wordt weer de stage.addEventListener aanmaken.

dus:


addEventListener(Event.ADDED, onAdd);

private function onAdd(event:Event):void {
stage.addEventListener(KeyboardEvent.KEY_DOWN, movePlane);
}


Hier door wordt de EventListener pas aangemaakt als je externe applicatie aan de displaylist is toegevoegd en dus stage geen Null geeft maar een refferentie naar de stage.

Hopenlijk ben ik een beetje duidelijk :)

RickFocus
%Europe/Berlin %933 %2007, 23:24
Het werkt! Helemaal goed Wivern! weer wat wijzer.
bedankt voor de snelle reactie....

Wivern
%Europe/Berlin %990 %2007, 00:46
Had toevallig een week geleden het zelfde probleem, maar fijn dat je probleem verholpen is :D

Smetje88
%Europe/Berlin %813 %2008, 19:31
Ik heb nog altijd hetzelfde probleem :s

In de swf werkt alles naar behoren nu.. Maar wanneer ik het in een browser bekijk doet hij het niet meer..

Of moet ik soms iets speciaals doen om het mouse_up event buiten mijn stage in de browser op te vangen?

nu heb ik:
addEventListener(Event.ADDED, onAdd);

private function onAdd(event:Event):void {
stage.addEventListener(MouseEvent.MOUSE_UP,MenuUpH andler);
}

jawel
%Europe/Berlin %872 %2008, 20:55
Event.ADDED_TO_STAGE is denk ik beter.

Smetje88
%Europe/Berlin %909 %2008, 21:49
misschien beter, maar nog altijd niet wat ik nodig heb.. MOUSE_UP event wordt in de browser nog altijd niet opgevangen..

theFlashWizard
%Europe/Berlin %374 %2008, 08:59
Je wilt muiskliks buiten de flash movie opvangen? Nee dat lukt inderdaad zo niet.
Daarvoor zou je de flashmovie de browser bijv. 100% moeten laten opvullen.

Smetje88
%Europe/Berlin %390 %2008, 09:22
Je wilt muiskliks buiten de flash movie opvangen? Nee dat lukt inderdaad zo niet.
Daarvoor zou je de flashmovie de browser bijv. 100% moeten laten opvullen.

Echt? oh boy.. dat is niet zo fijn.. Waarom lukt dat nou wel buitn de flash player.. maar weer niet in de browser :( nuja.. thx voor de reactie.. nu weet ik ook dat ik niet meer verder moet zoeken..

theFlashWizard
%Europe/Berlin %484 %2008, 11:37
Ow wacht, het gaat om keyboard. Het is dan altijd nog zo dat een flashmovie focus moet hebben. De gebruiker moet er dus altijd een keer op klikken. Dan kun je het toetsenbord volgens mij altijd afluisteren.

Smetje88
%Europe/Berlin %973 %2008, 23:22
Ow wacht, het gaat om keyboard. Het is dan altijd nog zo dat een flashmovie focus moet hebben. De gebruiker moet er dus altijd een keer op klikken. Dan kun je het toetsenbord volgens mij altijd afluisteren.

Nee, mijn probleem ging wel degelijk over MOUSE_UP events opvangen.. Dat keyboard probleem was van degene die dit topic opgestart heeft :)