| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Mar 2003 Ort: Frankfurt
Beiträge: 32
| Event Listener ohne Referenzen
Hallo Leute! Bevor ich mir den Mund fusselig rede habe ich mal meine Struktur (in Photoshop) nachgebaut. ![]() Beim change einer der MediaListen soll in der mediaStage ein neues MediaType angelegt werden. Beim change Event in einer der Listen (z.T. dynamisch generiert) dispatche ich einen eigen definierten Event. Damit ich meinen Listener nicht an jeder MediaList anmelden muss, setzte ich bubbles=true. Wie kommt nun die MediaStage an das Event? Code: Application.application.furtherStage.addEventListener(CallNewMediaEvent.CALL_NEW_MEDIA, validateMediaEvent); Das ist mein großes Problem! Könnt ihr mir helfen? vielen Dank, Ulli |
| | |
| | #2 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 11.856
|
Wo werden sie denn generiert?
__________________ github: https://github.com/floriansalihovic/L18nExample <florian xmlns:speaker="www.beyondtellerrand.com/ffk11/speakers_sessions" xmlns:trainer="http://www.beyondtellerrand.com/ffk11/workshops" /> and @ g+ |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Mar 2003 Ort: Frankfurt
Beiträge: 32
|
Achso... in der Component MediaList (diese ist ein Canvas) liegt eine Liste. Code: <mx:List id="liste"
dataProvider="{listData}"
itemRenderer="views.FurtherMedia"
change="listChanged(event)"... Code: private function listChanged(event:ListEvent):void
{
var myEvent:CallNewMediaEvent = new CallNewMediaEvent(CallNewMediaEvent.CALL_NEW_MEDIA);
//weitere definitionen
dispatchEvent(myEvent);
} |
| | |
| | #4 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 11.856
|
Ist das alles in einer Datei? Dann vergib doch ids. Dann kannst du direkt referenzieren.
__________________ github: https://github.com/floriansalihovic/L18nExample <florian xmlns:speaker="www.beyondtellerrand.com/ffk11/speakers_sessions" xmlns:trainer="http://www.beyondtellerrand.com/ffk11/workshops" /> and @ g+ |
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Mar 2003 Ort: Frankfurt
Beiträge: 32
|
Das CallNewMediaEvent wird aus der Komponente MediaList verschickt - diese liegt in der Komponente furtherStage (im Bild heißt sie fälschlicherweise listStage). Diese liegt auf der Application. Die Komponente die das Event empfangen soll MediaStage liegt auch auf der Application. edit: im Bild sind die Komponenten mit < > gekennzeichnet Geändert von ullim (20-11-2008 um 20:37 Uhr) Grund: hatte was vergessen |
| | |
| | #6 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 11.856
|
Sorry, ich verstehe das gerade nicht?! Kannst du nicht die mxml Strucktur posten?
__________________ github: https://github.com/floriansalihovic/L18nExample <florian xmlns:speaker="www.beyondtellerrand.com/ffk11/speakers_sessions" xmlns:trainer="http://www.beyondtellerrand.com/ffk11/workshops" /> and @ g+ |
| | |
| | #7 (permalink) | |
| Neuer User Registriert seit: Mar 2003 Ort: Frankfurt
Beiträge: 32
|
Hehe ok ich versuchs: Application: Code: <?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:views="views.*">
<mx:HBox width="100%" horizontalGap="0" height="100%">
<mx:VBox id="vBox" height="100%" width="100%" verticalGap="0" horizontalAlign="left" verticalAlign="top">
<mx:Image source="@Embed('assets/header.gif')" />
<views:MediaStage id="mediaStage" />
</mx:VBox>
<views:FurtherStage id="furtherStage" height="100%" width="100%" borderStyle="none" verticalGap="0" paddingTop="0"/>
</mx:HBox>
<mx:Label text="version 006 - Rapid Prototyping - hard couppling events" />
</mx:Application> Code: <?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="init()">
<mx:Script>
<![CDATA[
import mx.core.Application; //direkte Refferenz - muss noch weg
import events.CallNewMediaEvent;
private function init():void
{
//todo: irgendwie ohne direkte Refferenz!
Application.application.furtherStage.addEventListener(CallNewMediaEvent.CALL_NEW_MEDIA, validateMediaEvent);
}
private function validateMediaEvent(event:CallNewMediaEvent):void
{
addMediaType(...);
}
private function addMediaType(...):void
{
var mt:MediaType = new MediaType();
this.addChild(mt);
}
]]>
</mx:Script>
</mx:HBox> Code: <?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.events.ModuleEvent;
import mx.modules.ModuleLoader;
private var moduleLoader:ModuleLoader;
public function init():void
{
moduleLoader = new ModuleLoader();
moduleLoader.addEventListener(ModuleEvent.READY, moduleReady);
moduleLoader.url = "modules/Audio.swf";
moduleLoader.loadModule();
addChild(moduleLoader);
}
private function moduleReady(event:ModuleEvent):void
{
// Initialwerte an das Module geben
// am liebesten natürlich über ein Event
}
]]>
</mx:Script>
</mx:Canvas> Code: <?xml version="1.0" encoding="utf-8"?> <mx:Accordion xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:views="views.*"> <mx:TabNavigator label="asd"> <!--kommen später aus ner XML--> <views:MediaList label="1" /> <views:MediaList label="2" /> <views:MediaList label="3" /> <views:MediaList label="4" /> </mx:TabNavigator> <views:MediaList label="asd2" /> </mx:Accordion> Code: <?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:views="views.*" creationComplete="init()">
<mx:Metadata>
[Event(name="userCallNewMedia", type="events.CallNewMediaEvent")]
</mx:Metadata>
<mx:Script>
<![CDATA[
import mx.events.ListEvent;
import mx.rpc.events.ResultEvent;
import events.CallNewMediaEvent;
[Bindable] public var listData:ArrayCollection;
public function init():void
{
dataService.send();
}
public function dataService_Result(event:ResultEvent):void
{
listData = event.result.furtherMediaData.furtherMedia as ArrayCollection;
}
private function listChanged(event:ListEvent):void
{
var myEvent:CallNewMediaEvent = new CallNewMediaEvent(CallNewMediaEvent.CALL_NEW_MEDIA);
//event noch weiter spezifizieren
dispatchEvent(myEvent);
}
]]>
</mx:Script>
<mx:HTTPService
id="dataService"
result="dataService_Result(event)"
url="data/defaultMediaData.xml" />
<mx:List id="liste"
dataProvider="{listData}"
itemRenderer="views.ListMedia"
change="listChanged(event)"/>
</mx:Canvas> Code: <?xml version="1.0" encoding="utf-8"?> <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" horizontalScrollPolicy="off" verticalScrollPolicy="off" includeInLayout="true" > <!-- nur ein paar Labels etz. --> </mx:Canvas> Zitat:
| |
| | |
| | #8 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 11.856
|
In der VBox solltest du die Referenzierung vornehmen können. Ohne Refrenzen zu arbeiten ist ins Blaue raten und das hat nichts mit Software Entwicklung zu tun.
__________________ github: https://github.com/floriansalihovic/L18nExample <florian xmlns:speaker="www.beyondtellerrand.com/ffk11/speakers_sessions" xmlns:trainer="http://www.beyondtellerrand.com/ffk11/workshops" /> and @ g+ |
| | |
| | #9 (permalink) |
| Neuer User Registriert seit: Mar 2003 Ort: Frankfurt
Beiträge: 32
|
Meinst du in der Application? Code: import events.CallNewMediaEvent; vBox.addEventListener(CallNewMediaEvent.CALL_NEW_MEDIA, mediaStage.validateMediaEvent); |
| | |
| | #10 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 11.856
|
Nein, das meine ich nicht. Du musst die Events der MediaList Komponente einen EventLister im Scope in der auch die VBox Instanz ist, triggern lassen.
__________________ github: https://github.com/floriansalihovic/L18nExample <florian xmlns:speaker="www.beyondtellerrand.com/ffk11/speakers_sessions" xmlns:trainer="http://www.beyondtellerrand.com/ffk11/workshops" /> and @ g+ |
| | |
| | #11 (permalink) |
| Neuer User Registriert seit: Mar 2003 Ort: Frankfurt
Beiträge: 32
|
Hmm da blick ich jetzt nicht durch... Ich versuch das mal zu verstehen:
Code: parent.parent.addEventListener(CallNewMediaEvent.CALL_NEW_MEDIA, validateMediaEvent); Vielen vielen Dank Omega Psi! Ist das jetzt so richtig oder musst du mir nochmal auf die Finger hauen? |
| | |
![]() |
| Lesezeichen |
| Stichworte |
| event, event bubbling, eventlistener |
| Themen-Optionen | |
| Ansicht | |
| |