2009-07-06 2 views
1

У меня есть следующие два проекта в в Flex Builder 3:Как использовать тег [mixin] в приложениях AS3?

  • Один AS3 проект библиотеки (генерирует SWC-файл)

  • Один проект приложения Flex (MXML приложений)

Приложение MXML Application к проекту библиотеки AS3 (путь построения Flex). Все идет нормально. Теперь я хочу запустить код автоматически, когда приложение использует библиотеку AS3. Тег [mixin] должен делать именно то, что мне нужно.

Я выполнил инструкции от http://nondocs.blogspot.com/2007/04/metadatamixin.html и проверил проект AutoQuick. Последний является примером проекта Adobe, в котором показано использование инфраструктуры автоматизации. В этом проекте они используют тег [mixin] (класс AQAdapter).

Я следовал примерам, но мой код не работает. Статический метод init не вызывается. Я добавил библиотеку в список аргументов компилятора, который тоже не работал.

Как я могу заставить это работать?

/* class to be automatically loaded */ 
package { 
    /* includes */ 
    [mixin] 
    public class TestApp extends Sprite { 
     /* additional members */ 


     private static var mContainer:DisplayObjectContainer; 

     private static var mInstance:TestApp; 

     /** 
     * @private  
     */ 
     public static function init(root:DisplayObject):void 
     { 
      if(!mInstance) 
      { 
       mContainer = root as DisplayObjectContainer; 

       mContainer.addEventListener(FlexEvent.APPLICATION_COMPLETE, applicationCompleteHandler); 
      } 
     } 
    } 

} 

ответ

0

С [Mixin] тега, статический init() метод будет вызываться при запуске приложения до тех пор, пока класс ссылается прямо или косвенно от основного приложения.

Кроме того, вы должны помнить, что этот метод запускается в статическом контексте, поэтому вам не следует ссылаться на методы или атрибуты, которым требуется экземпляр (не static), без создания экземпляра в первую очередь.

Ссылка: http://adamflater.blogspot.com/2007/03/static-code-blocks.html

+1

Тег [Mixin] (первая буква в верхнем регистре!) Должен быть использован и ссылка, как "тест вар: TestApp;" достаточно для вызова статического кода. –

+0

Компилятор option -include = ClassName загружает класс в любом случае, поэтому не нужно добавлять ссылку в код. –

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