将一个XML节点转换为MovieClip

3

我有一个XML文档,想要在我的.fla文件中使用它来显示MovieClips:

<linkedMovieClip>TestClip</linkedMovieClip>

我在.flas文件中创建了一个名为TestClip的符号,并选择链接 - 导出为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;

有人可以提供建议吗?

2个回答

1

你的代码看起来没问题。尝试在你的程序中创建一个TestClip实例,以确保它被编译到SWF中。跟踪完全限定名称并确保它确实是TestClip

var _dummyClip:TestClip = new TestClip();
trace(flash.getQualifiedClassName(_dummyClip));//what does it trace?

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 节点的节点会失败并返回引用错误(因为没有名为“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);
 }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接