2010-01-19 69 views
3

我有我想用显示在我的.fla影片剪辑的XML文档:转换XML节点到MovieClip

<linkedMovieClip>TestClip</linkedMovieClip> 

在我的.fla,我创建了一个名为TestClip并选择连接符号>为Actionscript导出并将其命名为TestClip。

我在我的文档类的代码跟踪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; 

任何人都可以建议吗?

回答

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”节点的节点。

如果我使用if语句来检查节点是否存在,它的工作原理如下:

if (xmlListname.linkedMovieClip != undefined) { 

     trace(String(xmlListname.linkedMovieClip)); 
    var c:* = getDefinitionByName(String(xmlListname.linkedMovieClip)) as Class; 
     var mc:MovieClip = new c(); 
    trace(mc); 
}