0

Mark Farkland の Game チュートリアルに厳密に従って、単純なスクロール ゲームを作成しました。私は明らかに彼のコーディングパターンに従いましたが、道に迷ってしまい、彼の例とは異なる動作をする理由がわかりません。シーンがパージされるまで、すべてが正常に機能しています。

game.lua と gameover.lua の 2 つの lua ファイルがあります。game.lua exitScene で、すべてのイベントリスナーを削除しました。gameover.lua enterScene で、game.lua シーンを削除しました。ユーザーが画面に触れると、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
4

1 に答える 1

0

ジェットを現在のグループに追加する必要があります。

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 がトリガーされると、グループに対して適切なクリーンアップが行われます。

詳細/異なる実装:

http://docs.coronalabs.com/guide/graphics/group.html

于 2014-02-26T00:11:39.973 に答える