我个人觉得这个自定义时间封装性很好,但是有点复杂,不建议简单编程中使用 创建一个MXML组件,建自定义事件 <?xml version="1.0" encoding="utf-8"?> <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <!--[CDATA[ private function clickHandler():void{ // var myEvent:Event = new Event("nameDataShared"); var myEvent:TextEvent = new TextEvent("nameDataShared"); myEvent.text = myNameInput.text; dispatchEvent(myEvent); } ]]--> </mx:Script> <!--Metadata标签并不编译到可执行代码中,但它会提供信息控制你的代码如何编译。 不能把ActionScript或MXML代码放到Metadata标签中,它是特殊的指令。 告诉编译器正在创建一个自定义事件并命名。如:[Event(name="nameDataShared")]。这个方括号叫做meta标签。 --> <mx:Metadata> // [Event(name="nameDataShared")] [Event(name="nameDataShared", type="flash.events.TextEvent")] </mx:Metadata> <mx:Label text="Name Dispatcher" fontSize="16"/> <mx:HBox> <mx:Label text="Enter Your Name"/> <mx:TextInput id="myNameInput"/> </mx:HBox> <mx:Button label="Click ME" click="clickHandler()"/> </mx:VBox> 创建主程序文件 <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:components="components.*"> <mx:Script> <!--[CDATA[ [Bindable] private var sharedNameData:String = "Default Name"; function sharedNameDataHandler(evt:TextEvent):void{ sharedNameData = evt.text; } ]]--> </mx:Script> <components:NameDispatcher x="35" y="40" nameDataShared="sharedNameDataHandler(event)"/> <components:ReceiveName x="35" y="120" myName="{sharedNameData}"/> </mx:Application> 创建一个接收组件 <?xml version="1.0" encoding="utf-8"?> <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <!--[CDATA[ [Bindable] public var myName:String; ]]--> </mx:Script> <mx:Label text="{myName}" fontSize="16"/> </mx:VBox>