Difference between revisions of "SceneManager:changeScene"

From GiderosMobile
 
(One intermediate revision by the same user not shown)
Line 20: Line 20:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
'''Change scene with extra parameters'''
+
'''Change scene with a string extra parameter'''
 +
<syntaxhighlight lang="lua">
 +
-- initialise scene manager
 +
local sceneManager = SceneManager.new {
 +
['blankscene'] = BlankScene,
 +
['cutscenescene'] = CutsceneScene,
 +
}
 +
stage:addChild(sceneManager)
 +
 
 +
local somevalue = "some value"
 +
 
 +
sceneManager:changeScene('blankscene')
 +
sceneManager:changeScene('cutscenescene', 1, SceneManager.fade, easing.linear, { userData=somevalue })
 +
 
 +
-- then in cutscenescene class
 +
CutsceneScene = Core.class(Sprite)
 +
 
 +
function CutsceneScene:init(value)
 +
print(value) -- some value
 +
-- ...
 +
end
 +
</syntaxhighlight>
 +
 
 +
'''Change scene with a table extra parameter'''
 
<syntaxhighlight lang="lua">
 
<syntaxhighlight lang="lua">
 
-- initialise scene manager
 
-- initialise scene manager

Latest revision as of 01:13, 12 December 2023

Available since: Gideros 2020.2
Class: SceneManager

Description

Transitions between two scenes.

SceneManager:changeScene(scene,duration,transition,easing)

Values

scene (string) the name of the scene to transition to
duration (number) transition duration in seconds
transition (constant) transition type
easing (constant) easing type

Examples

Simple example

scenemanager:changeScene("level1", 2, SceneManager.moveFromRight, easing.outBack)

Change scene with a string extra parameter

-- initialise scene manager
local sceneManager = SceneManager.new {
	['blankscene'] = BlankScene,
	['cutscenescene'] = CutsceneScene,
}
stage:addChild(sceneManager)

local somevalue = "some value"

sceneManager:changeScene('blankscene')
sceneManager:changeScene('cutscenescene', 1, SceneManager.fade, easing.linear, { userData=somevalue })

-- then in cutscenescene class
CutsceneScene = Core.class(Sprite)

function CutsceneScene:init(value)
	print(value) -- some value
	-- ...
end

Change scene with a table extra parameter

-- initialise scene manager
local sceneManager = SceneManager.new {
	['blankscene'] = BlankScene,
	['cutscenescene'] = CutsceneScene,
}
stage:addChild(sceneManager)

-- load font
local fontName = 'consolas18'
local fontText = string.format('font/%s.txt', fontName)
local fontImage = string.format('font/%s.png', fontName)
local smallFont = Font.new(fontText, fontImage, true)

-- initialise gamestate
local gamestate = {
	cutsceneId = 1,
}

-- begin demo
sceneManager:changeScene('blankscene')
sceneManager:changeScene('cutscenescene', 1, SceneManager.fade, easing.linear,
	{
		userData = {
			sceneManager = sceneManager,
			gamestate = gamestate,
			font = smallFont,
		},
	}
)

-- then in cutscenescene class
CutsceneScene = Core.class(Sprite)

function CutsceneScene:init(params)
	-- copy existing systems and objects
	for k,v in pairs(params) do
		self[k] = v
	end

	-- load cutscene
	local gamestate = self.gamestate
	local cutsceneId = gamestate.cutsceneId

	-- initialise name text field
	local nameText = TextField.new(self.font, ' ')
	-- ...
end