0

我有以下函数不断运行,以检查玩家控制的球 (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 where i = 1)。

我不能使用 ("mcWall"[i]),因为我没有设置数组,并且认为我将使用的墙的数量没有必要。在舞台上,每面墙都有一个静态的实例名称,而不是在我的代码中。

关于如何让它测试 mcWall(i) 的任何建议?

提前喝彩。

4

1 回答 1

0

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

if (mcBall.hitTestObject(this.getChildByName("mcWall"+i)) == true){
    killBall();
}
于 2011-10-21T10:04:41.030 回答