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

时间:2009-07-06 08:16:18

标签: actionscript metaprogramming mixins

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

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

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

MXML应用程序引用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);
            }
        }
    }

}

1 个答案:

答案 0 :(得分:0)

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

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

链接:http://adamflater.blogspot.com/2007/03/static-code-blocks.html