MXML Componentでのイベント定義
MXMLでイベントを定義するには、
- 発行側でmx:Metadataでイベント宣言を行う
- 発行側でdispathEventでイベントを発行する。このときにmx:Metadataで宣言したイベント名と同じEventを発行すること
- 捕捉側で発行側コンポーネントにEventHandlerを紐付ける
で出来るっぽいです。でもsampleプロジェクトみながらの理解なので正式な方法かわかりません。
イベントを発行する側(MyCanvas.mxml)
<?xml version="1.0" encoding="utf-8"?> <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" width="100" height="100"> <mx:Metadata> [Event("change")] </mx:Metadata> <mx:VBox x="0" y="0" width="100" height="100" verticalAlign="middle" horizontalAlign="center"> <mx:Button label="発射" click="dispatchEvent (new Event ('change'))"/> </mx:VBox> </mx:Canvas>
イベントを受信する側
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" layout="vertical"> <mx:Script> <![CDATA[ private function changeHandler (event:Event):void { title.text = event.toString(); } ]]> </mx:Script> <mx:Label id="title" text="DEFAULT"/> <mx:Canvas width="100" height="100"> <MyCanvas change="changeHandler (new Event ('INVOKE!'))"/> </mx:Canvas> </mx:Application>