Actionscript 如何在AS3应用程序中使用[mixin]标记?

Actionscript 如何在AS3应用程序中使用[mixin]标记?,actionscript,metaprogramming,mixins,Actionscript,Metaprogramming,Mixins,我在Flex Builder 3中有以下两个项目: 一个AS3库项目(生成SWC文件) 一个Flex应用程序项目(MXML应用程序) MXML应用程序引用AS3库项目(Flex构建路径)。到目前为止,一切顺利。现在我想在应用程序使用AS3库时自动运行代码。[mixin]标记应该完全满足我的需要 我按照中的说明检查了AutoQuick项目。后者是Adobe的一个示例项目,展示了自动化框架的使用。在这个项目中,他们使用[mixin]标记(类AQAdapter) 我遵循了示例,但我的代码不起作用。

我在Flex Builder 3中有以下两个项目:

  • 一个AS3库项目(生成SWC文件)

  • 一个Flex应用程序项目(MXML应用程序)

MXML应用程序引用AS3库项目(Flex构建路径)。到目前为止,一切顺利。现在我想在应用程序使用AS3库时自动运行代码。[mixin]标记应该完全满足我的需要

我按照中的说明检查了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);
            }
        }
    }

}

使用
[Mixin]
标记,只要类直接或间接从主应用程序引用,就会在应用程序启动时调用静态
init()
方法

此外,您还必须记住,此方法是在静态上下文中运行的,因此在不首先创建实例的情况下,不应引用需要实例(非<
静态
)的方法或属性


链接:

必须使用标记[Mixin](第一个字母是大写!),并且像“var test:TestApp;”这样的引用足以调用静态代码。编译器选项-include=ClassName仍然加载该类,因此不需要在代码中添加引用。