Adobe Animate CC

时间:2017-07-04 17:25:09

标签: 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 HitUm(event: Event) {
  for (var i: int = 0; i < 10; i++) {
    if(MovieClip(Um[i]).hitTestObject(car_mc.rabond_mc)) {
      trace(Um[i]);
    }
  }
}

1 个答案:

答案 0 :(得分:4)

这一行:

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

使用字符串值填充Um数组。您之后使用该值就像是一个MovieClip(它不是),因此您会收到该错误。很可能你的trace(Um[i])行会产生“Um1”,“Um2”等,应该是“[Object MovieClip]”

假设您在尝试获取引用的同一范围内有实例名称,则可以执行以下操作之一。

使用getChildByName

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

或者像字典一样使用当前时间轴(this):

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