2012-07-16 49 views
0

難以從XML中獲取數據並將其放入數組中。錯誤#1034:類型強制失敗:無法將「」轉換爲陣列

在我的文檔的開始我的數組是這樣的:

// MC's in library with exported for AS with class names "page1", "page2", etc. 
var pageArray:Array = [new page1(), new page2(), new page3(), new page4(), new page5()]; 

,當我通過數組瀏覽所有運作良好,並罰款。

然後我的問題來了,當我嘗試從一個XML文件,從一個MovieClip內的新數組替換該數組。

/..xml details etc../ 
var pages_xml:String = xmlData.account.(@code == String(codeField.text)).pages; 
MovieClip(root).pageArray = pages_xml; 

來自我的XML的一行示例如下所示。

<account code="1"><accountName>Account1</accountName><pages>new page1(), new page2()</pages></account> 
從我的例子

所以上面你可以看到,我只是試圖取代新的第1頁(),新的第2頁(),新的第3頁()新的第1頁(),新的第2頁() 但是這樣做會導致這個錯誤:

TypeError: Error #1034: Type Coercion failed: cannot convert "new page1(), new page2()" to Array.

我知道最好的辦法可能是拼接或東西,但陣列會越來越亂以後,我大概會在最多50頁(不同爲每個賬戶代碼選擇頁面)。

希望我能做什麼或我做錯了什麼想法。

回答

2

你在做什麼錯是採取一個字符串,並將其分配給一個數組... ...而是它似乎你想創建一個類的實例基於一個字符串,因爲你說你必須解析字符串然後使用類似的東西創建新的實例

var parsedString:Array = pages_xml.split(","); 
MovieClip(root).pageArray=[]; 
for(var i:int=0;i<parsedString.length;i++) 
{ 
    var clazz:Class = getDefinitionByName(parsedString[i]) as Class; 
    MovieClip(root).pageArray.push(new clazz()); 
} 
+0

感謝您的快速響應,儘管如此,我仍然遇到問題,陣列似乎沒有正確加載? 我跑了跟蹤(MovieClip(root).pageArray);並且它的輸出返回 ',,' – user1172903 2012-07-16 02:22:38

+0

其實我沒有看到你的編輯,我用新腳本更新了它,它效果很棒! 我不得不修改XML來閱讀** page1,page2,page3 **而不是** new page1(),new page2(),new page3()**,這對我來說更加方便。 非常感謝您的幫助! – user1172903 2012-07-16 02:37:10

+0

酷沒有問題,是的,我不得不編輯很多次,不停地猜測部分,並在那裏修改了幾分鐘,無論如何感到高興它爲你工作。 – shaunhusain 2012-07-16 02:57:38

相關問題