MXML Componentでのイベント定義

MXMLでイベントを定義するには、

  1. 発行側でmx:Metadataでイベント宣言を行う
  2. 発行側でdispathEventでイベントを発行する。このときにmx:Metadataで宣言したイベント名と同じEventを発行すること
  3. 捕捉側で発行側コンポーネントに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>