我在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);
}
}
}
}
答案 0 :(得分:0)
使用[Mixin]
标记,只要从主应用程序直接或间接引用类,就会在应用程序启动时调用静态init()
方法。
此外,您必须记住此方法是在静态上下文中运行的,因此您不应引用需要实例的方法或属性(非static
),而不首先创建实例。
链接:http://adamflater.blogspot.com/2007/03/static-code-blocks.html