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事件做关联

⚠️ **GitHub.com Fallback** ⚠️