我想从班上发一个活动和一个网址。
我知道我可以做到以下几点:
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
答案 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;
}
答案 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);