2009-02-20 10 views
1

я получаю довольно неудобно с кодом, который я нахожу в Сети, как этоFlash: Где это название события жестко запрограммировано, пожалуйста?

myTM.addEventListener("allTransitionsInDone", doneTrans); 

(myTM является экземпляром TransitionManager.) Что такое правильный способ получить событие огонь, когда переход без движения (как выцветание)? Обычно я использую Event.EVENT_NAME, но этот номер не подходит.

ответ

3

Константа для имени события определяется по типу события по соглашению, так что, например, событие mouseDown является MouseEvent.MOUSE_DOWN.

Однако, «allTransitionsInDone» специально не имеет константы, поскольку он (вроде, см. Комментарии на livedocs) недокументирован. Поэтому не существует константы .ALL_TRANSITIONS_IN_DONE.

+0

Да, я видел это на LiveDocs ... страшных вещах. Думаю, как только я выясню, как самому исследовать источник, я нахожу его менее тревожным. Спасибо Саймону (снова). –

1

Добавлен ответ Саймона, если вы хотите, чтобы избежать «свободно ссылки» имена событий и определить свои собственные из них, вот несколько различных предложений традиционных способов использования тех:

1. Создание подклассов пользовательских событий flash.events.Event

Наверное, самый обычный и очевидный способ, хотя и является небольшим количеством отходов кода.

package transitions.events 
{ 
    import flash.events.Event; 


    public class MyTransitionEvent extends Event 
    { 

     public static const TRANSITION_INIT : String = "events.TransitionEvent.transitionInit"; 
     public static const TRANSITION_PROGRESS : String = "events.TransitionEvent.transitionProgress"; 
     public static const TRANSITION_COMPLETE : String = "events.TransitionEvent.transitionComplete"; 

     public function MyTransitionEvent(type : String, bubbles : Boolean, cancelable : Boolean) 
     { 
      super(type, bubbles, cancelable); 
     } 


     override public function clone() : Event 
     { 
      return new TransitionEvent(type, bubbles, cancelable); 
     } 
    } 
} 

2. Определение имен событий как статические константы внутри отправителя событий (например, подкласс Sprite или MovieClip)

Для того, чтобы прояснить ситуацию, типы событий исключительно должны быть определены внутри класса события отправляются.

package 
{ 
    import flash.events.Event; 
    import flash.events.EventDispatcher;   


    public class Transition extends EventDispatcher 
    { 

     public static const TRANSITION_INIT : String = "events.TransitionEvent.transitionInit"; 
     public static const TRANSITION_UPDATE : String = "events.TransitionEvent.transitionUpdate"; 
     public static const TRANSITION_COMPLETE : String = "events.TransitionEvent.transitionComplete"; 

     public function Transition() 
     { 
     } 


     private function init() : void 
     { 
      dispatchEvent(new Event(TRANSITION_INIT)) 
     } 
    } 
} 

3. Повторное использование нативные flash.events

К счастью, предопределенные события (т.е. flash.events.Event, flash.events.StatusEvent, flash.events.NetStatusEvent и т. Д.) Охватывают большинство возможных случаев. Итак, ради того, чтобы не изобретать колесо и не сохранять драгоценные строки кода, если вы найдете один соответствующий вашим требованиям, просто используйте его повторно.

package 
{ 
    import flash.events.Event; 
    import flash.events.EventDispatcher;  


    public class Transition extends EventDispatcher 
    { 


     public function Transition() 
     { 
     } 


     private function init() : void 
     { 
      dispatchEvent(new Event(Event.INIT)); 
     } 

     private function change():void 
     { 
      dispatchEvent(new Event(Event.CHANGE)); 
     } 

     private function complete():void 
     { 
      dispatchEvent(new Event(Event.COMPLETE)); 
     } 
    } 
} 
+0

Я думаю, что в первом конструктор и класс должны иметь одно и то же имя, нет? Кроме того, в последнем примере вы говорите, что allTransitionsInDone покрывается одним из трех «стандартных» событий? –

+0

Вы правы для конструктора, только что скорректировали его. Как ни странно, allTransitionsInDone, похоже, не является стандартным событием. На самом деле мне всегда было неудобно с mx/fl transition lib. Вы, наверное, слышали о Грантах Skinners GTween? http://www.gskinner.com/libraries/gtween/ –

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

  • Нет связанных вопросов^_^