我正在尝试使用swc编译的资产和代码。 在新的fla中,我选择导出时要包含的swc。 在代码工作的时间轴中创建实例时,我可以看到swc内部的资产,并从同一对象中跟踪属性。 问题是只有在动画片段中做同样的事情时才能到达资源(movieclip),但我仍然可以跟踪该类的属性。
我上传了工作文件: master.fla是创建swc的那个。 template.fla是我测试swc的地方。
files(这是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”这样的新类)。
谢谢Daniel!
答案 0 :(得分:1)
在模板
中为tf添加一个链接ID答案 1 :(得分:0)
fixed
将TextField
初始化添加到TextBox.as
(以便在跟踪tfield.text
时避免空引用)并将tf: TextBox
重命名为tb:TextBox
以使名称与tf
不同阶段