开始新的一天很简单!
我无法在dispatchEvent
中使用static class
,我想知道是否有人知道如何实现类似的功能,或者是否可以从我的静态类中调用dispatchEvent?
当我的静态类中的功能完成时,我基本上想要在我的flash文件中通知我的动作脚本代码。
谢谢,
答案 0 :(得分:12)
在阅读答案并了解我可以实现的目标之后,我已经实现了以下内容(如果他们能够看到一些示例代码,我认为它将来会帮助用户)。
private static var dispatcher:EventDispatcher = new EventDispatcher();
public static function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void {
dispatcher.addEventListener(type, listener, useCapture, priority, useWeakReference);
}
public static function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void {
dispatcher.removeEventListener(type, listener, useCapture);
}
public static function dispatchEvent(event:Event):Boolean {
return dispatcher.dispatchEvent(event);
}
public static function hasEventListener(type:String):Boolean {
return dispatcher.hasEventListener(type);
}
答案 1 :(得分:4)
静态类(具有静态属性和方法的类)不能继承普通的实例级方法,也不能使用静态方法实现接口。因此,public static function dispatchEvent
无法参与EventDispatcher
或IEventDispatcher
。
您可以创建与IEventDispatcher
中相同的静态方法,然后创建一个IEventDispatcher
的静态实例来处理事件,但您的静态类本身不能是EventDispatcher
但只能看类似的。
答案 2 :(得分:4)
而不是使用静态类中的静态方法。你可以这样使用。
import flash.events.EventDispatcher;
import flash.events.Event;
public class StaticClass extends EventDispatcher {
public static var STATICCLASS:StaticClass = new StaticClass();
public function StaticClass() {
// constructor code
}
public function dispatchEventFromStaticClass():void
{
dispatchEvent(new Event("Event_Dispatched"));
}
}
你可以在其他地方听这个
StaticClass.STATICCLASS.addEventListener("Event_Dispatched", onHandler);
StaticClass.STATICCLASS.dispatchEventFromStaticClass()
function onHandler(e:Event):void
{
trace("Hey !!")
}
答案 3 :(得分:2)
我可以看到的一个直接解决方法是将静态变量添加到EventDispatcher
- 无论何时调用addEventListener
,都会将其附加到EventDispatcher
- 每当您想要开火时/发送一个事件,你告诉你EventDispatcher
。
答案 4 :(得分:1)
您将使用私有变量_dispatcher:EventDispatcher并实现IEventDispatcher接口。
然后,您可以通过调度程序路由事件。如果这足以让你继续,请告诉我。