AS3:通过dispatchEvent- pass params调度事件?

时间:2010-01-02 02:53:39

标签: flex actionscript-3 events

我想从班上发一个活动和一个网址。

我知道我可以做到以下几点:

import flash.events.EventDispatcher;

private function thumbClick(e:MouseEvent):void
{
   dispatchEvent(new Event("clicked"));
}

但是我不知道如何将params与事件一起发送......?

另外,在我的主要app跑步者中,我尝试:

var my_ev:Event = new Event("clickedImage");
my_ev.hasOwnProperty(e.currentTarget.link);
dispatchEvent(my_ev);

...但我不确定这是正确的语法。

感谢您的帮助, JML

2 个答案:

答案 0 :(得分:5)

艾伦是对的,你会想做一个自定义事件。有几点需要注意:

import flash.events.Event;  

public class ThumbnailEvent extends Event
{
    public static var THUMB_CLICKED:String = "thumbClicked";

    private var _url:String;
    public function get url():String { return _url }

    public function ThumbnailEvent (type:String, url:String, bubbles:Boolean=false, cancelable:Boolean=false)
    {
        super(type,bubbles,cancelable);
        _url = url
    }

    override public function clone():Event
    {
        return new ThumbnailEvent(type, url, bubbles, cancelable);
    }
}

自定义事件需要始终覆盖克隆。如果事件冒泡或以任何方式中继,则需要此方法。自定义属性应该是私有的,只有一个只读的getter。这是一个标准惯例,可以防止在整个事件期间改变属性。

使用此方法会将您的代码更改为:

private function thumbClick(e:MouseEvent):void
{
   dispatchEvent(new ThumbnailEvent(ThumbnailEvent.THUMB_CLICKED, myUrlString));
}

//elsewhere

addEventListener(ThumbnailEvent.THUMB_CLICKED, thumbClickedHandler);

private function thumbClickedHandler(event:ThumbnailEvent):void
{
    var link:String = event.url;
}

Custom Event tutorial at adobe.com

答案 1 :(得分:1)

我只是制作一个自定义事件类。

import flash.events.Event;  


public class ThumbnailEvent extends Event
{
    public static var THUMB_CLICKED:String = "thumbClicked";
    public var url:String;

    public function ThumbnailEvent (type:String,url:String)
    {
              super(type);
              this.url = url
    }
}

然后像:

一样使用它
var thumbEvent:ThumbnailEvent = new ThumbnailEvent(ThumbnailEvent.THUMB_CLICKED,"myURL");
dispatchEvent(thumbEvent);