Corona传感器对象未正确移除。

我有一个游戏中的对象组,是一个传感器(让我们统称为object1)。当它与我的主对象(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
点赞
用户2524586
用户2524586

我研究了你的代码,简单来说这是问题的原因:

ball.collision = onCollision

它位于 scene:show 下方,因此每次进入场景时都会创建一个新的 eventListener,但它并未在 scene:hide 下移除。

基本上你的代码只有一半有效。例如你两次删除相同的项目,将运行时监听器添加到物体(而不是函数),然后又试图删除这些运行时监听器。例如,这个代码试图在一个不存在的显示对象上移除运行时事件监听器:

Runtime:removeEventListener( "collision", circle )

你需要做的是:

2016-01-20 23:55:34