自定义事件无效
看了网上的方法,照着做,可是不行,完全看不出问题在哪,高手指教。
DataChangeEvents.as
- Java code
package events{ import flash.events.Event; public class DataChangeEvent extends Event { public function DataChangeEvent() { super("DataChangeEvent"); } }}
show.mxml
- HTML code
<?xml version = "1.0" encoding = "utf-8"?><mx:Canvas xmlns:mx = "http://www.adobe.com/2006/mxml" width = "400" height = "300"> <mx:Script> <![CDATA[ import events.DataChangeEvent; public function clickHandler(evt:MouseEvent):void { trace("create and dispatch DataChangeEvent"); dispatchEvent(new DataChangeEvent()); } ]]> </mx:Script> <mx:Metadata> [Event(name="DataChange", type="events.DataChangeEvent")] </mx:Metadata> <mx:LinkButton x = "136" y = "101" label = "Click Me" click = "clickHandler(event)"/></mx:Canvas>
CustomEvent.mxml
- HTML code
<?xml version = "1.0" encoding = "utf-8"?><mx:Application xmlns:mx = "http://www.adobe.com/2006/mxml" layout = "absolute" xmlns:com = "components.*"> <mx:Script> <![CDATA[ import events.DataChangeEvent; public function dataChangeHandler(evt:DataChangeEvent):void { trace("dataChangeHandler: " + evt.toString()); } ]]> </mx:Script> <com:show DataChange = "dataChangeHandler(event)" click = "trace('clicked');"> </com:show></mx:Application>
主要是在CustomEvent.mxml中无法捕获自定义事件
[解决办法]
这个简单,可是分数太少了,,,
太粗心了,你自定义事件类指定的事件类型是:DataChangeEvent
而你在元标签指定的“DataChange”事件类型,只能监控到DataChangeEvent事件,不能监听到DataChange事件,
最简单的修改方法是
<mx:Metadata>
[Event(name="DataChangeEvent", type="events.DataChangeEvent")]
</mx:Metadata>
<com:show DataChangeEvent= "dataChangeHandler(event)"
click = "trace('clicked');">
</com:show>