Actionscript 3 Adobe动画CC

Actionscript 3 Adobe动画CC,actionscript-3,Actionscript 3,TypeError:错误1034:类型强制失败:无法将Um1转换为flash.display.MovieClip Um1、Um2、Um3。。。。。我舞台上的MovieClip对象 var Um: Array = new Array(); for (var i: int = 0; i < 10; i++) { Um[i] = "Um" + Number(i + 1); } this.addEventListener(Event.ENTER_FRAME, HitUm); function

TypeError:错误1034:类型强制失败:无法将Um1转换为flash.display.MovieClip

Um1、Um2、Um3。。。。。我舞台上的MovieClip对象

var Um: Array = new Array();
for (var i: int = 0; i < 10; i++) {
  Um[i] = "Um" + Number(i + 1);
}

this.addEventListener(Event.ENTER_FRAME, HitUm);
function HitUm(event: Event) {
  for (var i: int = 0; i < 10; i++) {
    if(MovieClip(Um[i]).hitTestObject(car_mc.rabond_mc)) {
      trace(Um[i]);
    }
  }
}
这一行在这里:

Um[i] = "Um" + Number(i + 1);
正在用字符串值填充Um数组。你以后使用这个值,就像它是一个MovieClip,而不是,所以你得到了那个错误。最有可能的是,您的traceUm[i]行在应该是[Object MovieClip]时会导致Um1、Um2等

假设您在试图获取引用的同一作用域中有实例名称,则可以执行以下操作之一

使用:

或者像使用字典一样使用当前时间线:

Um[i] = this["Um" + (i + 1)];    

谢谢你非常非常好的解释+1如果答案解决了你的问题,请接受
Um[i] = this["Um" + (i + 1)];