首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

自定义事件无效解决方法

2012-02-27 
自定义事件无效看了网上的方法,照着做,可是不行,完全看不出问题在哪,高手指教。DataChangeEvents.asJava co

自定义事件无效
看了网上的方法,照着做,可是不行,完全看不出问题在哪,高手指教。
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>

热点排行