电晕传感器物体未正确移除

Corona sensor object not removing properly

我在游戏中有一组对象是传感器(我们将它们统称为对象 1)。当它与我的主要对象 (object2) 碰撞时,分数增加 10。但是,在随后每次重新启动场景(不是整个游戏)之后,object1 和 object2 之间的每次碰撞都会复制自身,然后重复三次,依此类推。

所以对于场景的第一个 运行,object1 与 object2 碰撞一次(我知道这一点是因为每次这两个对象碰撞时我都有一个打印语句)。第二次碰撞两次,第三次碰撞三次,依此类推。我想我不会删除传感器的某个功能,但我无法弄清楚它是什么。如果这是问题所在,我该如何正确移除对象?

我在碰撞时移除 object1 的代码:

local function onCollision( self,event )

        if(event.object2.name == "bonus")then--if we hit a bonus ball

            event.object2:removeSelf()--removes the bonus ball object from the scene
            print("bonus collided")

            display.remove(event.object2)


            game.addToScore(10)--adds a value of 10 to the score
            scoreText.text = game.returnScore()
            Runtime:removeEventListener("enterFrame", event.object2)

        else                

            composer.gotoScene("restart")   
            Runtime:removeEventListener("touch", onObjectTouch)    
        end

    end

我研究了你的代码,简而言之,这就是问题所在

ball.collision = onCollision

它位于 scene:show 下,因此每次您进入场景时都会创建一个新的 eventListener。而且它不会在 scene:hide.

下被删除

基本上你的一半代码实际上没有做任何事情。例如,您两次删除相同的项目,将运行时侦听器添加到对象(而不是函数),并且您试图删除这个运行时侦听器。例如,这会尝试删除甚至不存在的显示对象上的运行时事件侦听器:

Runtime:removeEventListener( "collision", circle )

您需要做的是: