Flash TypeError:错误#1034:类型强制在addChild()失败;

Flash TypeError:错误#1034:类型强制在addChild()失败;,flash,actionscript,addchild,Flash,Actionscript,Addchild,编译器消息: import flash.display.MovieClip; var clip1:clip01 = new clip01; var clip2:clip02 = new clip02; var clip3:clip03 = new clip03; var clip4:clip04 = new clip04; var clip5:clip05 = new clip05; var files:Array = [clip1,clip2,clip3,clip4,clip5]; fun

编译器消息:

import flash.display.MovieClip;

var clip1:clip01 = new clip01;
var clip2:clip02 = new clip02;
var clip3:clip03 = new clip03;
var clip4:clip04 = new clip04;
var clip5:clip05 = new clip05;
var files:Array = [clip1,clip2,clip3,clip4,clip5];

function randomizeArray(array:Array):Array
{
    var newArray:Array = new Array();
    while (array.length > 0)
    newArray.push(array.splice(Math.floor
    (Math.random()*array.length), 1));
    return newArray;
}

var RandomArray:Array = randomizeArray(files);

 trace(RandomArray[0]);
 trace(clip1);

 //var c:MovieClip = MovieClip(RandomArray[0]);
 //addChild(c); not working :(

 addChild(RandomArray[0]); // I want something like this!! Here i got err..
 addChild(clip1);
我从
trace()
知道我有这个对象,那会是什么问题呢?
我将一个MC对象传递给
addChild()
,所以我不知道:(

您的问题是
addChild()
中所指的实际上是一个数组,而不是电影剪辑。您的随机数组实际上是一个数组数组。这是因为
splice()
方法返回一个包含已删除元素的数组,而不是要删除的元素

要解决此问题,当您要将返回的拼接阵列添加到新阵列中时,必须参考该阵列的第一个元素。以下是您需要进行的更改:

[object clip03]
[object clip01]
TypeError: Error #1034: Type Coercion failed: cannot convert []@3ea4aee1 to flash.display.DisplayObject.
    at RandomVideo_fla::MainTimeline/frame1()
请注意splice()调用后的[0]

希望这有帮助

newArray.push(array.splice(Math.floor
(Math.random()*array.length), 1)[0]);