AS3:对许多动画片段使用for / do循环会引发隐式强制错误

时间:2011-10-21 09:58:55

标签: flash actionscript-3 implicit hittest coercion

我有以下功能不断运行以检查玩家控制的球(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)的任何建议?

提前干杯。

1 个答案:

答案 0 :(得分:0)

编译器说的是真的。 hiTestObject()函数将DisplayObject作为参数,但您传递的是字符串"mcWall"+i。尝试:

if (mcBall.hitTestObject(this.getChildByName("mcWall"+i)) == true){
    killBall();
}