3

我有一个 xml 文档,我想用它在我的 .fla 中显示 MovieClip:

<linkedMovieClip>TestClip</linkedMovieClip>

在我的 .fla 中,我创建了一个名为 TestClip 的符号,然后选择 Linkage > Export for 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;

任何人都可以建议吗?

4

2 回答 2

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);
 }
于 2010-01-20T14:02:52.877 回答
1

你的代码看起来不错。尝试在您的程序中创建一个实例,TestClip以确保它被编译到 SWF 中。找出完全限定的名称并确保它确实是TestClip

var _dummyClip:TestClip = new TestClip();
trace(flash.getQualifiedClassName(_dummyClip));//what does it trace?
于 2010-01-20T04:51:42.250 回答