电晕传感器对象无法正确移除

时间:2016-01-20 21:11:10

标签: android ios lua sdk corona

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

因此,对于场景的第一次运行,object1与object2碰撞一次(我知道这是因为每次2个对象碰撞时我都有一个print语句)。第二次碰撞两次,第三次碰撞三次,依此类推。我认为我没有删除传感器的某些功能,但我无法弄清楚它是什么。如果出现问题,如何正确删除对象?

我在碰撞时删除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

1 个答案:

答案 0 :(得分:0)

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

ball.collision = onCollision

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

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

Runtime:removeEventListener( "collision", circle )

您需要做的是: