as3数组字符串到movieClip

时间:2014-01-09 08:06:38

标签: actionscript-3 flash

更新的答案:找到了工作。我将我的数组更改为mc名称而不是字符串数组,以便它现在可以正常工作。然而,好奇这个问题是否可以回答。


我有一个随机数组的字符串名称。我随机整理出来。但我需要补充一下 现有的基于字符串名称的动画片段。

这是我所拥有的不起作用。

public function addToStage()
{
    Happy = sorted.sort( randomize );
    trace("First is: " +Happy[0]); /// Works! 
    addChild(Happy[0]); // Does not work
}

我得到的错误 TypeError:错误#1034:类型强制失败:无法将“Apple”转换为flash.display.DisplayObject。     在Main / addToStage()[C:etc .. \ Main.as:74]     在Main / init()[C:etc ... \ Main.as:64]     在Main()[C:etc ... \ Main.as:25]

3 个答案:

答案 0 :(得分:2)

假设数组中的字符串是MovieClip变量的名称,那么它就像这样简单:

this.addChild(this[Happy[0]])

有效地查找名称等于数组中字符串的变量,所以这个[“hello”]将查找this.hello

如果字符串不是movieclip vars的名称,那么您需要使用字典或对象将影片剪辑“映射”到字符串中,如下所示:

var dictionary:Dictionary = new Dictionary;
dictionary["hello"] = movieClipVariable;

this.addChild(dictionary["hello"]);

如果这不是您的意思,请告诉我,我会再看看

答案 1 :(得分:0)

数组是动态的,类型在数组的子元素上丢失,存储为Object。 要添加到显示列表,您必须将它们转换为DisplayObject或扩展DisplayObject的类:

addChild(Happy[0] as DisplayObject); // should work

答案 2 :(得分:0)

你必须做一个从对象到showobject的输入。

private var tempMC:MovieClip;

public function addToStage()
{
    Happy = sorted.sort( randomize );
    trace("First is: " +Happy[0]); /// Works! 
    tempMC = Happy[0] as MovieClip;
    addChild(tempMC); // it should work
}