Apache flex AS3:通过dispatchEvent-pass参数进行事件调度?
我想从我的类中发送一个事件以及一个url 我知道我可以做到以下几点:Apache flex AS3:通过dispatchEvent-pass参数进行事件调度?,apache-flex,actionscript-3,events,Apache Flex,Actionscript 3,Events,我想从我的类中发送一个事件以及一个url 我知道我可以做到以下几点: import flash.events.EventDispatcher; private function thumbClick(e:MouseEvent):void { dispatchEvent(new Event("clicked")); } 但我不知道我将如何在活动中发送参数 此外,在我的主应用程序runner中,我尝试: var my_ev:Event = new Event("clickedImage")
import flash.events.EventDispatcher;
private function thumbClick(e:MouseEvent):void
{
dispatchEvent(new Event("clicked"));
}
但我不知道我将如何在活动中发送参数
此外,在我的主应用程序runner中,我尝试:
var my_ev:Event = new Event("clickedImage");
my_ev.hasOwnProperty(e.currentTarget.link);
dispatchEvent(my_ev);
…但我不确定这是否是正确的语法
谢谢你的帮助,
jml我只是创建了一个自定义事件类
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);
我只是定制了一个事件类
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);
Allan是正确的,您将希望进行自定义事件。有几件事需要注意:
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;
}
Allan是正确的,您需要创建一个自定义事件。有几件事需要注意:
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;
}
好极了。谢谢你的帮助!我没有意识到事件可以用来将事物组合在一起。。。应该有。别担心:)是的,按照乔尔的方式做,我只是有时候有点懒。。好极了。谢谢你的帮助!我没有意识到事件可以用来将事物组合在一起。。。应该有。别担心:)是的,按照乔尔的方式做,我只是有时候有点懒。。hahaThanks非常感谢包括这些细节,Joel。非常感谢包括这些细节,Joel。