我有 2 个使用 Flash Builder 4.6 创建的项目:
- 一个 ActionScript 项目
- 移动 Flex 项目
这两个项目都加载包含影片剪辑资源的相同外部 SWF 文件(使用 Flash Professional CS6 创建)(使用相同的共享代码加载外部 swf 文件)
这两个项目都扩展了 swf 资产文件中的影片剪辑。例如,在 swf 文件中,我有一个名为“Test”的影片剪辑,其中包含一个文本字段。链接类是“MyTest”,文本字段的实例名称是“txt1”。
我在两个项目中都有一个名为“MyTest”的类,它包含一个公共“txt1”属性和一个私有“var counter:int”,一旦加载了 swf,我使用以下代码创建该类的一个实例:
var x:MyTest = new MyTest();
在 actionscript 项目中,它运行良好并且 x 已正确创建,文本字段 txt1 已正确设置。
然而,在 flex 项目中,txt1 属性为空,因此该实例不是来自外部 swf 的“测试”影片剪辑的实例。
我究竟做错了什么?为什么它在 actionscript 项目中工作而不是在 mobile flex 项目中工作?这是完成所有这些工作的共享代码,我不想只为 flex 项目重写一个新的......
谢谢。
让事情更清楚
这段代码:
var cls:Class = loader.contentLoaderInfo.applicationDomain.getDefinition("MyTest") as Class;
var x:Object = new cls();
trace(getQualifiedClassName(x));
var y:MyTest = x as MyTest;
将 x 设置为 swf 中定义的 MyTest 类型(没有“计数器”属性”,并且 y 将为空(安全案例未成功)。