我正在构建游戏,并且正在使用故事板。在enterScene上,我从另一个模块调用我的显示对象lilEnem。当我改变场景时,我无法将他从记忆中移除,我不知道如何将他插入到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 :(得分:0)
首先,您需要使用Composer,因为Storyboard将被弃用。有转换页面......这不是很难:
Storyboard to Composer Migration
当你调用composer.gotoScene(或Storyboard)时,你可以将params传递给那个场景:
(main.lua)
storyboard.gotoScene("MyScene",
{
params =
{
param1 = "something",
player = playerObj, etc.
}
}
然后,在被调用的场景中,在“show”方法中,您可以读取这些参数(此代码使用的是作曲家):
(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
答案 1 :(得分:0)
要在离开场景时删除项目,请使用exitScene()
方法:删除事件侦听器,停止动画,暂停物理,删除对不再需要的显示对象的引用等。< / p>
要插入单独的视图,场景就像任何其他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')