SceneManager
Supported platforms:
Available since: 2020.2
Inherits from: Sprite
Description
An easy way to manage scenes.
First you need to add the plugin to your project: right click Plugins -> Add plugin -> SceneManager
Then you need to require the plugin: <syntaxhighlight lang="lua"> require "scenemanager" </source> Note: works in pair with the Easing plugin
Example
How to declare and change scenes in your main.lua file <syntaxhighlight lang="lua"> require "scenemanager" require "easing"
scenemanager = SceneManager.new( { ["menu"] = Menu, ["level01"] = Level01, } ) stage:addChild(scenemanager) -- from app start to menu scenemanager:changeScene("menu") -- from menu to level01 --scenemanager:changeScene("level01", 1, SceneManager.moveFromRight, easing.outBack) </source>
Below you will find what a scene class looks like.
The Bare Bone of a Scene Class
<syntaxhighlight lang="lua"> Level01 = Core.class(Sprite)
function Level01:init() -- BG application:setBackgroundColor(0x1234AA)
-- LISTENERS self:addEventListener("enterBegin", self.onTransitionInBegin, self) self:addEventListener("enterEnd", self.onTransitionInEnd, self) self:addEventListener("exitBegin", self.onTransitionOutBegin, self) self:addEventListener("exitEnd", self.onTransitionOutEnd, self) end
-- GAME LOOP function Level01:onEnterFrame(e) end
-- EVENT LISTENERS function Level01:onTransitionInBegin() self:addEventListener(Event.ENTER_FRAME, self.onEnterFrame, self) end
function Level01:onTransitionInEnd() self:myKeysPressed() end
function Level01:onTransitionOutBegin() self:removeEventListener(Event.ENTER_FRAME, self.onEnterFrame, self) end
function Level01:onTransitionOutEnd() end
-- KEYS HANDLER function Level01:myKeysPressed() self:addEventListener(Event.KEY_DOWN, function(e) -- for mobiles and desktops if e.keyCode == KeyCode.BACK or e.keyCode == KeyCode.ESC then scenemanager:changeScene("menu", 1, transitions[2], easing.outBack) end end) end </source>
A table of all transitions
<syntaxhighlight lang="lua"> transitions = { SceneManager.moveFromRight, -- 1 SceneManager.moveFromLeft, -- 2 SceneManager.moveFromBottom, -- 3 SceneManager.moveFromTop, -- 4 SceneManager.moveFromRightWithFade, -- 5 SceneManager.moveFromLeftWithFade, -- 6 SceneManager.moveFromBottomWithFade, -- 7 SceneManager.moveFromTopWithFade, -- 8 SceneManager.overFromRight, -- 9 SceneManager.overFromLeft, -- 10 SceneManager.overFromBottom, -- 11 SceneManager.overFromTop, -- 12 SceneManager.overFromRightWithFade, -- 13 SceneManager.overFromLeftWithFade, -- 14 SceneManager.overFromBottomWithFade, -- 15 SceneManager.overFromTopWithFade, -- 16 SceneManager.fade, -- 17 SceneManager.crossFade, -- 18 SceneManager.flip, -- 19 SceneManager.flipWithFade, -- 20 SceneManager.flipWithShade, -- 21 } </source>
MethodsSceneManager.new creates a new SceneManager object SceneManager:changeScene transitions to a scene |
Events"enterBegin" Scene is being entered ConstantsSceneManager.moveFromRight Move from the right |