我有以下功能不断运行以检查玩家控制的球(mcBall)和多个墙(恰当地命名为mcWall1,mcWall2等)之间的碰撞:( var numberofwalls在每个不同的地方都有自己的值)框架中有不同数量的动画片段。)
function checkcollision(evt:Event) : void {
for(var i = 1; i <= numberofwalls; i++){
if (mcBall.hitTestObject("mcWall"+i) == true){
killball()
}
}
}
}
但是当我这样做时,编译时出现以下错误:
场景1,图层'动作',第1帧,第89行1067:将类型String的值隐式强制转换为不相关的类型flash.display:DisplayObject。
第89行是这样的:
if (mcBall.hitTestObject("mcWall"+i) == true){
我的理解是它试图添加一个字符串和一个int,但我不明白为什么它不只是将整数添加到字符串的末尾(例如:mcWall1,其中i = 1)。 / p>
我无法使用(“mcWall”[i]),因为我没有设置阵列,并且认为没有必要使用我将要使用的墙壁数量。每个墙壁都有静态的实例名称阶段,而不是我的代码。
关于如何让它测试mcWall(i)的任何建议?
提前干杯。
答案 0 :(得分:0)
编译器说的是真的。 hiTestObject()
函数将DisplayObject
作为参数,但您传递的是字符串"mcWall"+i
。尝试:
if (mcBall.hitTestObject(this.getChildByName("mcWall"+i)) == true){
killBall();
}