Flex 事件传递小结

站点的一个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"/>


    两种方法效果一样,就看个人喜好了
    
    
        
        

posted on 2009-11-05 17:04  Cheney Hao  阅读(609)  评论(0)    收藏  举报

导航