Bonjour,
Je débute en flex et j'essaye, à partir de tutoriaux, de générer un évenement dans un composant mxml et de le récupérer dans un autre. L'évenement est bien émis mais je n'arrive pas à le récupérer. Voici le code:
Voici mon composant pour mon menu qui émet l'event:
Le composant qui écoute les events:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 <?xml version="1.0" encoding="utf-8"?> <mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:custom="components.menu.*" headerHeight="0" borderStyle="solid" shadowDistance="0" horizontalAlign="center" > <mx:Metadata> [Event(name=events.StartMenuWidgetEvent.WIDGET_CHANGED,type="flash.events.Event")] [Event(name=events.StartFormWidgetEvent.WIDGET_CHANGED,type="flash.events.Event")] [Event(name=events.StartChartWidgetEvent.WIDGET_CHANGED,type="flash.events.Event")] </mx:Metadata> <mx:Script> <![CDATA[ import mx.events.ItemClickEvent; import events.*; // Event handler function to print a message // describing the selected Button control. private function clickHandler(event:ItemClickEvent):void { if( event.label.localeCompare("Menu") == 0 ) { dispatchEvent( new events.StartMenuWidgetEvent(events.StartMenuWidgetEvent.WIDGET_CHANGED) ); myTA.text="Selected button index: " + String(event.index) + "\n" + "Selected button label: " + event.label +"\n" + "Target " + event.currentTarget ; } else if( event.label.localeCompare("Formulaires") == 0 ) { dispatchEvent( new events.StartFormWidgetEvent(events.StartFormWidgetEvent.WIDGET_CHANGED) ); myTA.text="Selected button index: " + String(event.index) + "\n" + "Selected button label: " + event.label+"\n" + "Target " + event.currentTarget ; } else if( event.label.localeCompare("Tableaux") == 0 ) { dispatchEvent( new events.StartChartWidgetEvent(events.StartChartWidgetEvent.WIDGET_CHANGED) ); myTA.text="Selected button index: " + String(event.index) + "\n" + "Selected button label: " + event.label+"\n" + "Target " + event.currentTarget ; } } ]]> </mx:Script> <mx:ButtonBar horizontalGap="5" itemClick="clickHandler(event);"> <mx:dataProvider> <mx:Array> <mx:String>Menu</mx:String> <mx:String>Formulaires</mx:String> <mx:String>Tableaux</mx:String> </mx:Array> </mx:dataProvider> </mx:ButtonBar> <mx:TextArea id="myTA" width="400%" height="80%"/> </mx:Panel>
Et enfin une de mes exceptions:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82 <?xml version="1.0" encoding="utf-8"?> <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="100%" xmlns:customchart="components.chart.*" xmlns:custommenu="components.menu.*" xmlns:customform="components.form.*" creationComplete="cHandler(event)" > <mx:Script> <![CDATA[ import events.*; private function cHandler(event:Event):void{ myWindow.addEventListener(events.StartFormWidgetEvent.WIDGET_CHANGED, displayFormWidget); myWindow.addEventListener(events.StartChartWidgetEvent.WIDGET_CHANGED, displayChartWidget); myWindow.addEventListener(events.StartMenuWidgetEvent.WIDGET_CHANGED, displayMenuWidget); } public function displayFormWidget(evt:Event):void{ currentState='Form'; txt.text="event form"; } public function displayChartWidget(evt:Event):void{ currentState='Chart'; txt.text="event chart"; } public function displayMenuWidget(evt:Event):void{ currentState='Menu'; txt.text="event menu"; } ]]> </mx:Script> <mx:states> <mx:State name="Menu" basedOn="" > <mx:RemoveChild target="{myWindow}"/> <mx:AddChild relativeTo="{myWindow}" creationPolicy="all" position="lastChild"> <custommenu:Menu/> </mx:AddChild> </mx:State> <mx:State name="Form" basedOn=""> <mx:RemoveChild target="{myWindow}"/> <mx:AddChild relativeTo="{myWindow}" creationPolicy="all" position="lastChild"> <customform:AccountCreationForm/> </mx:AddChild> </mx:State> <mx:State name="Chart" basedOn=""> <mx:RemoveChild target="{myWindow}"/> <mx:AddChild relativeTo="{myWindow}" creationPolicy="all" position="lastChild"> <customchart:ChartVisualization/> </mx:AddChild> <mx:AddChild relativeTo="{myWindow}" creationPolicy="all" position="lastChild"> <customchart:DynamicChartVisualization/> </mx:AddChild> </mx:State> </mx:states> <mx:Panel height="100%" width="100%" id="myWindow" > <custommenu:Menu/> <mx:TextArea id="txt" height="50" width="400"/> </mx:Panel> </mx:Canvas>
Est ce que quelqu'un aurait une idée?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package events { import flash.events.Event; public class StartMenuWidgetEvent extends Event { public static const WIDGET_CHANGED:String ="menu"; public function StartMenuWidgetEvent( type:String, bubbles:Boolean=true, cancelable:Boolean=false) { super( type , bubbles, cancelable); } } }
Merci.
Partager