Lua 日冕喷发破坏了物理学

Lua 日冕喷发破坏了物理学,lua,coronasdk,physics,collision,purge,Lua,Coronasdk,Physics,Collision,Purge,我创建了一个简单的滚动游戏,紧跟着MarkFarkland的游戏教程。我很清楚地遵循了他的编码模式,但我已经迷失了方向,不知道为什么我的行为与他的示例不同。在清除场景之前,一切正常 我有两个lua文件:game.lua和gameover.lua。在game.lua exitScene中,我删除了所有EventListener。在gameover.lua entercene中,我清除了game.lua场景。当用户触摸屏幕时,它会加载game.lua文件。每一个对象都像新的一样加载和刷新,除了向上发

我创建了一个简单的滚动游戏,紧跟着MarkFarkland的游戏教程。我很清楚地遵循了他的编码模式,但我已经迷失了方向,不知道为什么我的行为与他的示例不同。在清除场景之前,一切正常

我有两个lua文件:game.lua和gameover.lua。在game.lua exitScene中,我删除了所有EventListener。在gameover.lua entercene中,我清除了game.lua场景。当用户触摸屏幕时,它会加载game.lua文件。每一个对象都像新的一样加载和刷新,除了向上发射的主对象

游戏,卢阿

    local storyboard = require("storyboard")
    local scene = storyboard.newScene()
    local physics = require("physics")

    function scene:createScene(event)
         physics.start()
         ....
         local jet = display.newImage("images/jet_normal.png")
         physics.addBody(jet, "dynamic", {density=.07, bounce=0.1, friction=.2, radius=12})

        local activateJets = function(self, event)
            self:applyForce(0, -1.5, self.x, self.y)
        end

        function touchScreen(event)
            local phase = event.phase
            if phase == "began" then
                jet.enterFrame = activateJets
                Runtime:addEventListener("enterFrame", jet)
            end
            if phase == "ended" then
                Runtime:removeEventListener("enterFrame", jet)
            end
        end

        Runtime:addEventListener("touch", touchScreen)
end

function scene:exitScene(event)
    Runtime:removeEventListener("touch", touchScreen)
    Runtime:removeEventListener("enterFrame", enemy1)
    Runtime:removeEventListener("collision", onColission)
end
GameOver.lua

function start(event)
    if event.phase == "began" then
        storyboard.gotoScene("game", "fade", 100)
    end
end

function scene:enterScene(event)
    storyboard.purgeAll("game")
    background:addEventListener("touch", start)
end

function scene:exitScene(event)
    background:removeEventListener("touch", start)
end

您需要将jet添加到当前组

function scene:createScene(event)
   local group = self.view
   --...
   local jet = display.newImage("images/jet_normal.png")
   --...
   group:insert(jet)
   Runtime:addEventListener("touch", touchScreen)
end
触发exitScene时,将对组进行适当的清理

更多信息/不同的实施:


我已经这样做了,并且在exitScene中删除了jet的eventlistener,但结果是一样的。您可以始终使用storyboard.removeScenegame,这在解决purgeScene问题时肯定会起作用。