错误#1034:类型强制失败:无法将“”转换为阵列

问题描述:

难以从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页(不同为每个账户代码选择页面)。

希望我能做什么或我做错了什么想法。

你在做什么错是采取一个字符串,并将其分配给一个数组... ...而是它似乎你想创建一个类的实例基于一个字符串,因为你说你必须解析字符串然后使用类似的东西创建新的实例

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