我有一个xml文档,我想在我的.fla中显示MovieClip:
<linkedMovieClip>TestClip</linkedMovieClip>
在我的.fla中,我创建了一个名为TestClip的符号,并选择了Linkage&gt;导出为Actionscript并将其命名为TestClip。
我的Document类中的代码跟踪xml:
var t:*= getDefinitionByName(String(slideItem.linkedMovieClip)) as Class;
var linked:MovieClip = new t();
trace("linked is..."+ linked); // outputs [Object TestClip];
然而,当我编译时,我收到错误#1065。
ReferenceError: Error #1065: Variable is not defined.
at global/flash.utils::getDefinitionByName()
我搜索了很多网站,建议包括以下导入:
import flash.utils.getDefinitionByName;
import TestClip;
我包含了以下虚拟变量:
public var _dummyClip:TestClip;
但是,我仍然收到错误消息。当我检查调试器时,它来自这一行:
var t:*= getDefinitionByName(String(slideItem.linkedMovieClip)) as Class;
有人可以提供建议吗?
答案 0 :(得分:1)
您的代码看起来不错。尝试在程序中创建TestClip
的实例,以确保将其编译到SWF中。追踪完全限定名称并确保它确实是TestClip
var _dummyClip:TestClip = new TestClip();
trace(flash.getQualifiedClassName(_dummyClip));//what does it trace?
答案 1 :(得分:1)
上面的答案,我现在看到了我的问题。
我的XML看起来像:
<items>
<item><linkedMovieClip>TestClip</linkedMovieClip></item>
<item><linkedMovieClip>TestClip</linkedMovieClip></item>
<item><linkedMovieClip>TestClip</linkedMovieClip></item>
<item></item>
<item><linkedMovieClip>TestClip</linkedMovieClip></item>
<item></item>
</items>
即。有些项目有节点,有些则没有。
当我使用for each (var item:XML in itemList)
循环迭代我的XML节点()时,不包含节点的节点会失败并返回引用错误(因为没有名为“linkedMovieClip”的节点。
如果我使用if语句来检查节点是否存在,那么它可以工作:
if (xmlListname.linkedMovieClip != undefined) {
trace(String(xmlListname.linkedMovieClip));
var c:* = getDefinitionByName(String(xmlListname.linkedMovieClip)) as Class;
var mc:MovieClip = new c();
trace(mc);
}