[英]How do I define my own events in AS3?
如何在AS3中定義自己的事件偵聽器? 我知道它與調度事件有關,但是我對如何使用它幾乎迷失了。
我正在編寫自定義類。
您必須實現IEventDispatcher 。 像這樣:
class ExampleDispatcher implements IEventDispatcher {
private var dispatcher:EventDispatcher;
public function ExampleDispatcher(){
dispatcher = new EventDispatcher(this);
}
public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void {
dispatcher.addEventListener(type, listener, useCapture, priority);
}
public function dispatchEvent(evt:Event):Boolean {
return dispatcher.dispatchEvent(evt);
}
public function hasEventListener(type:String):Boolean {
return dispatcher.hasEventListener(type);
}
public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void {
dispatcher.removeEventListener(type, listener, useCapture);
}
public function willTrigger(type:String):Boolean {
return dispatcher.willTrigger(type);
}
}
從技術上講,您無需工具即可定義這些功能,但這只是使其變得更有條理。
如果您不需要傳遞帶有事件的參數,只需使用像erkmene這樣的字符串就可以了。
聽眾:
dispatchingObject.addEventListener( "SomeEvent", onEvent );
調度員:
dispatchEvent( new Event( "SomeEvent" ) );
確保調度事件的類直接或在類層次結構中的某個位置擴展EventDispatcher。
如果調度對象包含它在靜態常量變量中調度的事件的名稱,則上述代碼可以正常工作。
聽眾:
dispatchingObject.addEventListener( DispatchingClass.SOME_EVENT, onEvent );
調度員:
public static const SOME_EVENT : String = "SomeEvent";
dispatchEvent( new Event( SOME_EVENT ) );
除了Aurel300的答案; 請記住,每個DisplayObject(Sprite,MovieClip)也是事件分配器。 您可以通過寫下以下內容來發送活動:
dispatchEvent(new Event('my_event'));
您還可以通過擴展Event類來創建自定義事件。 事件類型(上面的“ my_event”)只是一個字符串,用於將特定事件與所有其他事件區分開。 例如,當你寫:
dispatchEvent(new Event(Event.COMPLETE));
你只是使用常量COMPLETE的字符串值。 您也可以通過寫作獲得相同的效果:
dispatchEvent(new Event('complete'));
所有偵聽該對象以獲取“完整”類型事件的事件偵聽器都將捕獲此信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.