站点的一个Flex页面在(Main.mxml),里面包含两个组件
一个显示图片(PhotoArea.as)
一个显示控制条(ToolBar.mxml)
那么如何让这两个组件之间传递事件呢?
事件机制真是Flex的核心内容,很好很强大,这个东西让Ajax相形见拙。
下面我就以一个例子来说明一下这个传递是如何实现的
1.首先“定义”,定义一个Event类(PhotosEvent),马老师说这样比较好管理。
package com.exhdLib
{
import flash.events.Event;
public class PhotosEvent extends Event
{
//这快是这个文件的核心,可以扩展多个事件,形成事件列表,一目了然。
//而且打点后就会出现在提示里,很方便很方便。
public static const PAUSEMOVE :String = "
PauseMove";
public function PhotosEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
}
}
}
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{
//do somthing
}
一种是在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"/>
两种方法效果一样,就看个人喜好了
转载于:https://www.cnblogs.com/haoch_00/archive/2009/11/05/1596799.html