【发布时间】:2017-07-22 09:57:30
【问题描述】:
我有一个纯 AS3 项目(没有 mxml)。
使用 flex SDK 4.6 编译时,类(及其静态变量)在被引用时(使用静态成员或创建类实例时)第一次被初始化。
使用 air SDK 24.0 编译时,许多类(及其静态变量)在应用程序启动时被初始化,而不是在它们被引用之前。为什么?是否有任何编译选项或 SWF 元标记来防止这种情况发生?
我的静态变量需要一些其他数据来初始化,这些数据是在运行时动态加载的,在应用程序启动时不会立即可用。所以,我不希望他们这么早被启动。
【问题讨论】:
-
使用带有私有实例成员变量和公共静态getter/setter的单例blog.gskinner.com/archives/2006/07/as3_singletons.html
-
@autum Flex SDK 使用 ASC 1.0,而 AIR SDK 使用 ASC 2.0,这会导致不同的行为,例如您描述的行为。我同意使用上述方法。
-
自我实现的“后期初始化”对于大单例来说是可以接受的,但当您在数百个类中有数百个运行时常量时,这不是一个好方法。它使代码冗长且无效。我坚持编译器应该做这项工作。而且这里没有提到:helpx.adobe.com/flash-builder/…
标签: actionscript-3 flash apache-flex