您的位置:首页 > 其它

自定义Flex事件,实现组件间传递事件

2012-12-05 12:15 471 查看
1.首先定义一个Event类,假设类名为PhotosEvent。

packagecom.exhdLib

{

import flash.events.Event;

//自己申明的时间继承于Event类

public class PhotosEvent extends Event

{

//这里是这个文件的核心,可以扩展多个事件,形成事件列表,即申明事件名称

//在事件后点就会出现在提示里,很方便。

public static const PAUSEMOVE:String = "PauseMove";

//这里前三个参数是继承于Event类,后面的myStr是自己定义的事件参数,可以定义多个参数

public function PhotosEvent(type:String,bubbles:Boolean=false, cancelable:Boolean=false, myStr:String=null)

{

if(myStr!=null) _myStr=myStr;

super(type, bubbles, cancelable);

}

private var _myStr:String;

//下面两个方法都是定义事件的属性

public function getmyStr():String

{

return _myStr;

}

Public function set myStr(myStr:String):void

{

_myStr=myStr;

}

}

}

2.然后“调用”,在控制条(ToolBar)里相应的地方,写派发的事件。

//我们调用的事件,就是在PhotosEvent类里定义好的,清楚吧。

//注意前面要引用一下PhotosEvent类

dispatchEvent(new PhotosEvent(PhotosEvent.PAUSEMOVE));

3.最后“响应”,有两种方法:

一种是添加监听事件,在Main.mxml里添加如下代码

import com.exhdLib.PhotosEvent;

import flash.events.Event;

private function Init():void

{

Toolbar.addEventListener(PhotosEvent.PAUSEMOVE,PausePhoto);

}

private function PausePhoto(Event:PhotosEvent):void

{

//dosomthing

}

一种是在ToolBar组件里增加响应方法:

//注意红色的必须和PhotosEvent里的事件名称相同PauseMove

<mx:Metadata>

[Event(name="PauseMove", type="com.exhdLib.PhotosEvent")]

</mx:Metadata>

这样就可以在Main.mxml直接调用这个方法了

<ToolBar:BarContral id="Toolbar" PauseMove="doSomethingCode"

width="100%" height="20%"XML_URL="data/photo.xml"/>

两种方法效果一样,就看个人喜好了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: