2013-06-20 2 views
4

Как я могу удалить все объекты из «game.lua», когда я покинул сцену игры, все данные по-прежнему находятся на экране, как я могу удалить все, когда я уйду, и верну его обратно в начало когда я вернусь в «game.lua»?Чистая форма формы данных

game.lua:

local storyboard = require("storyboard") 
local scene = storyboard.newScene() 
_W = display.contentWidth 
_H = display.contentHeight 
system.setIdleTimer(false); -- Prevent the app from becoming suspended 
local physics = require "physics" 
physics.start() 
clouts = true 
score = 0 
speeda1 = 100 
speedb1 = 150 

function scene:createScene(event) 
    local group = self.view 
    end 

function scene:enterScene(event) 
local group = self.view 
--start drop zone 
if clouts then 

local badclout1 = {} 
local bad1Group = display.newGroup() 
local function spawnBC1() 
    local badclouts1 = display.newImage("BCloud1.png") 
    badclouts1.x = math.random(0, _W) 
    physics.addBody(badclouts1, "dynamic", { density=.1, bounce=.1, friction=.2, radius=45 })  
    badclouts1.name = "BCloud1" 
    badclouts1.bodyType = "kinematic" 
    badclouts1.isSensor = true 
    badclouts1.y = math.random(-100, -50) 
    badclouts1.index = #badclout1 + 1 
    bad1Group:insert(badclouts1) 
    badclouts1.rotation = math.random(-10,10) -- Rotate the object 
    badclouts1:setLinearVelocity(0, math.random(speeda1, speedb1)) -- Drop down 
    badclout1[badclouts1.index] = badclouts1 
    tmrSpawn1 = timer.performWithDelay(math.random(spawna, spawnb), spawnBC1) 
return badclouts1 
end 
tmrSpawn1 = timer.performWithDelay(math.random(1000, 10000), spawnBC1) 
local function removeBomb() 
    for i, v in pairs(badclout1) do 
    if badclout1[i].y >1000 then 
     badclout1[i]:removeSelf() 
     badclout1[i] = nil 
    end 
    end 
end 
Runtime:addEventListener("enterFrame", removeBomb) 

end 
-- end drop zone 

local function speatTimer() 
    speeda1 = speeda1+1 
    speedb1 = speedb1+1 
end 
local mainTimer = timer.performWithDelay(550, speatTimer, 200) 

function gameOver() 
    storyboard.gotoScene("restart", "fade", 400) 
end 

end 

function scene:exitScene(event) 
    local group = self.view 
    Runtime:removeEventListener("collision", onCollision) 
    Runtime:removeEventListener("accelerometer", onTilt) 
    Runtime:removeEventListener("enterFrame", removeBomb) 
end 


function scene:destroyScene(event) 
    local group = self.view 
end 

function scene:overlayEnded(event) 
    local group = self.view 
end 

scene:addEventListener("createScene", scene) 
scene:addEventListener("enterScene", scene) 
scene:addEventListener("exitScene", scene) 
scene:addEventListener("destroyScene", scene) 
scene:addEventListener("overlayEnded", scene) 
return scene 

С уважением Кевин,

ответ

2

, если вы используете раскадровку и хотите сбросить все значения, которые вы можете удалить сцену, прежде чем перейти к другой сцене так, когда вы идете снова на той же сцене все будет создан

function scene:exitScene(event) 
    local group = self.view 
    Runtime:removeEventListener("collision", onCollision) 
    Runtime:removeEventListener("accelerometer", onTilt) 
    Runtime:removeEventListener("enterFrame", removeBomb) 
    storyboard.removeScene("SCENE TO REMOVE") 
end 

или сделать это после того, как вы идете на сцену

function scene:enterScene(event) 
storyboard.removeScene("SCENE TO REMOVE") 
end 

вот ссылка о том, как его реализовать. http://www.coronalabs.com/blog/2012/07/31/storyboard-scene-purging-vs-removal/

1

Есть два способа сбросить обратно свои позиции объектов и переменные данные

первого один является создание функции, как этого

function resetGame() 
--your initial position and data values here 
end 

И называют его всякий раз, когда вам нужно сбросить ваша игра, но вы будете вручную кодировать значения сброса.

второй Один из них создает пустую сцену. манекен сцена сцена, которая перенаправит вас снова на игровой сцене, как этот

пустышки Scene

function scene:createScene(event) 
    local group = self.view 
    storyboard.gotoScene("scenes.Game") --scene/Game.lua 
end 

сбросить значения ваших объектов и переменных, но не забудьте удалите всех слушателей и положите его на функцию exitScene(), когда вы перейдете к манекену .

1

Поскольку вы используете раскадровку, почему бы не просто вставить все ваши экранные объекты в группу:

group:insert(someobject) 

и пусть менеджер сцены делают работу за вас. Не создавая сцену в сцене: createScene() ваша способность переходить на экран не будет работать. Не помещая вещи в группу, она не может удалить их для вас, когда сцена уходит.