2014-09-26 82 views
0

我正在构建一个游戏,并正在使用故事板。在enterScene上,我从另一个模块调用显示对象lilEnem。当我改变场景时,我无法将他从memeory中删除,并且我不知道如何将他插入到scene.view中,因为它是一个单独的文件。过渡场景如何?

function level1:enterScene() 
local level1Group = level1.view 
print("enteredScene") 

local function goHome(event) 
    storyboard.removeAll() 
    storyboard.gotoScene("mainMenu") 
end 

local function pauseUi (event) 
    local pauseButton = display.newImage("assets/graphics/gameplay/UI/pause/pause.png", display.contentWidth- 25, 25) 

    pauseButton:addEventListener("tap", goHome) 

    level1Group:insert(pauseButton) 
end 

pauseUi() 
--Load and play game song when entered scene 
-- 
-- 
gameAudio.gamePlay() 

-- Spawns lilEnems 
-- 
-- 
local function spawnLilEnem (event) 
     -- Checking myData module for lilEnem ID 
     --Storing in local id 
     -- 
     -- 
     local id = myData.lilEnemId 

     --lil Enem will spawn in time math.random gives 
     -- 
     -- 
     -- 
     local randomSpawnTime = math.random(0,5000) 


     --Calls spawnEnem Module 
     -- 
     -- 
     lilEnem.spawnEnem(id) 

     --Adds 1 to id to give each enem unique id 
     -- 
     -- 
     myData.lilEnemId = myData.lilEnemId + 1 

     --timer will call this function at random times 
     -- 
     -- 
     local spawnEnemTimer = timer.performWithDelay(randomSpawnTime, spawnLilEnem, 1) 

     --When id reachs == number it will stop spawning enems 
     --Number is the highest numbered lil Enem ID 
     --This statement decides how many lilEnems spawn 
     -- 
     -- 
     if id == 5 then 
      timer.cancel(spawnEnemTimer) 
     end 
end 
spawnLilEnem() 

--Call score from scoreData module 
--score = 0 in scoreDate module 
-- 
-- 
local score = display.newText(scoreData.score, display.contentWidth/2, 50, nil, 30) 

回答

0

首先,你需要使用作曲家故事板将被弃用。有一个转换页面......这不是很困难:

Storyboard to Composer Migration

当你调用composer.gotoScene(或故事板),您可以通过PARAMS到的那一幕:

(main.lua) 

storyboard.gotoScene("MyScene", 
    { 
    params = 
     { 
      param1 = "something", 
      player = playerObj, etc. 
     } 
    } 

然后,在被叫场景,在“秀”的方法,你可以阅读这些PARAMS(该代码使用的是作曲家):

(MyScene.lua) 

local scene = composer.newScene() 

function scene:show(event) 
    if event.phase == "did" then 
    if event.params then 
     something = event.params.something 
     player = event.params.player 
    end 
    end 
end 

scene:addEventListener("show", scene) 

return scene 
0

要删除某个项目时离开现场时,使用exitScene()方法:移除事件侦听器,停止动画,暂停物理学,删除对显示你不再需要的对象,等

用于插入独立的观点,场面就像任何其他的Lua模块,这样你就可以调用设置功能模块:

-- yourGotoScene.lua 
local value -- hide it from other modules 

function setValue(newValue) 
    value = newValue 
    print('setting value to new:', value) 
end 

-- yourCallingScene.lua 
... 
require 'yourGotoScene' 
yourGotoScene.setValue(123) 
storyboard.gotoScene('yourGotoScene')