过渡场景如何?
问题描述:
我正在构建一个游戏,并正在使用故事板。在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)
末
答
首先,你需要使用作曲家故事板将被弃用。有一个转换页面......这不是很困难:
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
答
要删除某个项目时离开现场时,使用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')