2010-01-19 71 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); 
}