flex metadata event - ythy/blog GitHub Wiki
控件:
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Metadata>
[Event(name="MX", type="flash.events.Event")]
</mx:Metadata>
<mx:Script>
<![CDATA[
import flash.events.Event;
function onBtnClick():void{
var e:Event = new Event('MX', true, false);
this.dispatchEvent(e);
}
]]>
</mx:Script>
<mx:Label text="test" click="onBtnClick()" />
</mx:VBox>
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:com="*"
creationComplete="onInit()">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
function onMX(e:Event){
Alert.show("right");
}
]]>
</mx:Script>
<com:button id="btn" MX="onMX(event)" >
</com:button>
</mx:Application>
[Event(name="MX", type="flash.events.Event")]的含义是通知编译器,当前控件可以派发MX事件。 编译后主页引用如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:com="*"
creationComplete="onInit()">
<mx:Script>
<![CDATA[
import mx.core.UIComponentDescriptor;
import mx.controls.Alert;
private var _documentDescriptor_:UIComponentDescriptor;
override public function initialize() : void
{
_documentDescriptor_ = new UIComponentDescriptor({type:Application, propertiesFactory:function () : Object
{
return {childDescriptors:[new UIComponentDescriptor({type:button, id:"btn", events:{MX:"__btn_MX"}})]};
}
});
mx_internal::setDocumentDescriptor(_documentDescriptor_);
super.initialize();
}
function __btn_MX(event:Event) : void
{
onMX(event);
return;
}
function onMX(e:Event){
Alert.show("right");
}
]]>
</mx:Script>
<com:button id="btn" >
</com:button>
</mx:Application>
通过new UIComponentDescriptor({type:button, id:"btn", events:{MX:"__btn_MX"}}); 将MX事件做关联