【问题标题】:TypeError: Error #1034: Type Coercion failed at addChild();TypeError:错误 #1034:类型强制在 addChild() 处失败;
【发布时间】:2014-07-30 08:26:45
【问题描述】:
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);

编译器消息:

[object clip03]
[object clip01]
TypeError: Error #1034: Type Coercion failed: cannot convert []@3ea4aee1 to flash.display.DisplayObject.
    at RandomVideo_fla::MainTimeline/frame1()

我从trace() 知道我有这个对象,那可能是什么问题? 我将一个 MC 对象传递给 addChild(),所以我不知道 :(

【问题讨论】:

    标签: flash actionscript addchild


    【解决方案1】:

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

    http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Array.html#splice()

    要解决此问题,当您想将返回的拼接数组的第一个元素添加到新数组时,您必须引用它。这是您需要进行的更改:

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

    注意 splice() 调用后的 [0]。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-04
      相关资源
      最近更新 更多