我正在尝试使用来自 swc 的已编译资产和代码。在一个新的 fla 中,我选择导出时要包含的 swc。当在代码的时间轴中创建实例时,我可以看到 swc 内的资产并跟踪来自同一对象的属性。问题是仅在影片剪辑中执行相同操作时,无法访问资产(影片剪辑),但我仍然可以从类中跟踪属性。
我已经上传了工作文件:master.fla 是创建 swc 的文件。template.fla 是我测试 swc 的地方。
文件(这是 cs4 .fla + .swc + .as)
编辑: 如何重现我遇到的问题:
.1 创建一个新的master.fla 并使其编译成一个swc。
.2 在master.fla 时间轴中创建一个Textfield,给它一个实例名称“tfield”并从中制作一个MovieClip。
.3 创建一个 TextBox.as 类并定义一个公共变量“tfield”(这将获取您在电影中拥有的 TextField 资产)。
.4 在库中将新创建的 MovieClip 链接到 TextBox 类。
.5 导出,您应该会看到 TextBox 类的一个实例。
使用swc:
.1 创建一个新的fla并使其使用master.swc作为源
.2 打开时间轴中的第一帧并编写以下代码:
var tf : TextBox = new TextBox();
addChild(tf)
这应该可以按预期工作,创建一个 TextBox 的实例,您应该会看到里面的 TextField。
.3 注释前面的代码并编写相同的代码,但这次是在 MovieClip 中并将其放到时间轴上。尽管代码有效,但无法访问“tfield”。你也看不到。
解决方案:正如 Daniel 所指出的,只需为包含代码的 MovieClip 提供一个链接 ID(不要提供 TextBox 类 ID,只需让它创建一个新类,如“lalala”)。
谢谢丹尼尔!