更新的答案:找到了工作。我将我的数组更改为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]
答案 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
}