2012-01-06 3 views
8

Хороший простой, чтобы начать день!dispatchEvent в статическом классе - AS3

Я не могу использовать dispatchEvent в моем static class, мне было интересно, знает ли кто-нибудь, как я могу достичь аналогичной функциональности, или если вообще можно вызвать диспетчер отправки из моего статического класса?

В основном я хочу сообщить код сценария действия в своем флеш-файле, когда функциональность моего статического класса завершена.

Спасибо,

ответ

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

Вы могли бы использовать приватную переменную _dispatcher: EventDispatcher и реализовать интерфейс IEventDispatcher.

Вы можете переправить события через диспетчера. Дай мне знать, если этого достаточно, чтобы ты пошел.

2

Один прямой обходной путь я могу видеть, чтобы иметь статическую переменную быть вашим EventDispatcher - всякий раз, когда вы получаете addEventListener под названием, прикрепить его к EventDispatcher - всякий раз, когда вы хотите, чтобы огонь/отправка событие, вы говорите так, чтобы ваш EventDispatcher ,

4

Статические классы (классы со статическими свойствами и методами) не могут наследовать обычные методы уровня экземпляра и не могут реализовывать интерфейсы со статическими методами. Таким образом, ваш public static function dispatchEvent не может принять участие в EventDispatcher или IEventDispatcher.

Вы можете создать те же статические методы, что и в IEventDispatcher, а затем создать статический экземпляр IEventDispatcher для обработки событий, но ваш статический класс сам по себе не может быть EventDispatcher, но может выглядеть только схожим.

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 !!") 
} 
+0

Святая корова, вы понятия не имеете, насколько это помогло мне! Thnx! – theseal53

+0

приветствую :) –

Смежные вопросы