Difference between revisions of "SceneManager"
m |
m |
||
(4 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
__NOTOC__ | __NOTOC__ | ||
<!-- GIDEROSOBJ:SceneManager --> | <!-- GIDEROSOBJ:SceneManager --> | ||
− | ''' | + | '''Supported platforms:''' [[File:Platform android.png]][[File:Platform ios.png]][[File:Platform pc.png]][[File:Platform mac.png]][[File:Platform winrt.png]][[File:Platform win32.png]]<br/> |
− | ''' | + | '''Available since:''' 2020.2<br/> |
− | ''' | + | '''Inherits from:''' [[Special:MyLanguage/Sprite|Sprite]]<br/> |
=== Description === | === Description === | ||
− | An easy way to manage scenes. | + | An easy way to manage scenes. |
− | |||
<source lang="lua"> | <source lang="lua"> | ||
require "scenemanager" | require "scenemanager" | ||
</source> | </source> | ||
+ | '''Note''': works in pair with the [[Easing]] plugin | ||
=== Example === | === Example === | ||
− | How to declare and change scenes | + | How to declare and change scenes in your main.lua file |
<source lang="lua"> | <source lang="lua"> | ||
require "scenemanager" | require "scenemanager" | ||
Line 21: | Line 21: | ||
{ | { | ||
["menu"] = Menu, | ["menu"] = Menu, | ||
− | [" | + | ["level01"] = Level01, |
} | } | ||
) | ) | ||
Line 27: | Line 27: | ||
-- from app start to menu | -- from app start to menu | ||
scenemanager:changeScene("menu") | scenemanager:changeScene("menu") | ||
− | -- from menu to | + | -- from menu to level01 |
− | --scenemanager:changeScene(" | + | --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 === | ||
+ | <source 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 === | ||
+ | <source 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> | </source> | ||
{|- | {|- | ||
| style="width: 50%; vertical-align:top;"| | | style="width: 50%; vertical-align:top;"| | ||
− | === | + | === Methods === |
− | [[Special:MyLanguage/SceneManager.new|SceneManager.new]] '' | + | [[Special:MyLanguage/SceneManager.new|SceneManager.new]] ''creates a new SceneManager object''<br/><!-- GIDEROSMTD:SceneManager.new(table) creates a new SceneManager object --> |
− | [[Special:MyLanguage/SceneManager:changeScene|SceneManager:changeScene]] '' | + | [[Special:MyLanguage/SceneManager:changeScene|SceneManager:changeScene]] ''transitions to a scene''<br/><!-- GIDEROSMTD:SceneManager:changeScene(scene, duration, transition, ease, options) transitions to a scene --> |
| style="width: 50%; vertical-align:top;"| | | style="width: 50%; vertical-align:top;"| | ||
− | === | + | === Events === |
− | [[Special:MyLanguage/SceneManager_enterBegin|"enterBegin"]]<br/><!-- GIDEROSEVT:enterBegin--> | + | [[Special:MyLanguage/SceneManager_enterBegin|"enterBegin"]] ''Scene is being entered'' <br/><!-- GIDEROSEVT:enterBegin Scene is being entered--> |
− | [[Special:MyLanguage/SceneManager_enterEnd|"enterEnd"]]<br/><!-- GIDEROSEVT:enterEnd--> | + | [[Special:MyLanguage/SceneManager_enterEnd|"enterEnd"]] ''Scene has been entered'' <br/><!-- GIDEROSEVT:enterEnd Scene has been entered--> |
− | [[Special:MyLanguage/SceneManager_exitBegin|"exitBegin"]]<br/><!-- GIDEROSEVT:exitBegin--> | + | [[Special:MyLanguage/SceneManager_exitBegin|"exitBegin"]] ''Scene is being exited''<br/><!-- GIDEROSEVT:exitBegin Scene is being exited--> |
− | [[Special:MyLanguage/SceneManager_exitEnd|"exitEnd"]]<br/><!-- GIDEROSEVT:exitEnd--> | + | [[Special:MyLanguage/SceneManager_exitEnd|"exitEnd"]] ''Scene has been exited'' <br/><!-- GIDEROSEVT:exitEnd Scene has been exited--> |
− | === | + | |
− | SceneManager.moveFromRight<br/><!-- GIDEROSCST:SceneManager.moveFromRight--> | + | === Constants === |
− | SceneManager.moveFromLeft<br/><!-- GIDEROSCST:SceneManager.moveFromLeft--> | + | SceneManager.moveFromRight ''Move from the right'' <br/><!-- GIDEROSCST:SceneManager.moveFromRight Move from the right--> |
− | SceneManager.moveFromBottom<br/><!-- GIDEROSCST:SceneManager.moveFromBottom--> | + | SceneManager.moveFromLeft ''Move from the left'' <br/><!-- GIDEROSCST:SceneManager.moveFromLeft Move from the left--> |
− | SceneManager.moveFromTop<br/><!-- GIDEROSCST:SceneManager.moveFromTop--> | + | SceneManager.moveFromBottom ''Move from the bottom'' <br/><!-- GIDEROSCST:SceneManager.moveFromBottom Move from the bottom--> |
− | SceneManager.moveFromRightWithFade<br/><!-- GIDEROSCST:SceneManager.moveFromRightWithFade--> | + | SceneManager.moveFromTop ''Move from the top'' <br/><!-- GIDEROSCST:SceneManager.moveFromTop Move from the top--> |
− | SceneManager.moveFromLeftWithFade<br/><!-- GIDEROSCST:SceneManager.moveFromLeftWithFade--> | + | SceneManager.moveFromRightWithFade ''Move from the right with fading'' <br/><!-- GIDEROSCST:SceneManager.moveFromRightWithFade Move from the right with fading--> |
− | SceneManager.moveFromBottomWithFade<br/><!-- GIDEROSCST:SceneManager.moveFromBottomWithFade--> | + | SceneManager.moveFromLeftWithFade ''Move from the left with fading'' <br/><!-- GIDEROSCST:SceneManager.moveFromLeftWithFade Move from the left with fading--> |
− | SceneManager.moveFromTopWithFade<br/><!-- GIDEROSCST:SceneManager.moveFromTopWithFade--> | + | SceneManager.moveFromBottomWithFade ''Move from the bottom with fading'' <br/><!-- GIDEROSCST:SceneManager.moveFromBottomWithFade Move from the bottom with fading--> |
− | SceneManager.overFromRight<br/><!-- GIDEROSCST:SceneManager.overFromRight--> | + | SceneManager.moveFromTopWithFade ''Move from the top with fading'' <br/><!-- GIDEROSCST:SceneManager.moveFromTopWithFade Move from the top with fading--> |
− | SceneManager.overFromLeft<br/><!-- GIDEROSCST:SceneManager.overFromLeft--> | + | SceneManager.overFromRight ''Slide over from the right'' <br/><!-- GIDEROSCST:SceneManager.overFromRight Slide over from the right--> |
− | SceneManager.overFromBottom<br/><!-- GIDEROSCST:SceneManager.overFromBottom--> | + | SceneManager.overFromLeft ''Slide over from the left'' <br/><!-- GIDEROSCST:SceneManager.overFromLeft Slide over from the left--> |
− | SceneManager.overFromTop<br/><!-- GIDEROSCST:SceneManager.overFromTop--> | + | SceneManager.overFromBottom ''Slide over from the bottom'' <br/><!-- GIDEROSCST:SceneManager.overFromBottom Slide over from the bottom--> |
− | SceneManager.overFromRightWithFade<br/><!-- GIDEROSCST:SceneManager.overFromRightWithFade--> | + | SceneManager.overFromTop ''Slide over from the top'' <br/><!-- GIDEROSCST:SceneManager.overFromTop Slide over from the top--> |
− | SceneManager.overFromLeftWithFade<br/><!-- GIDEROSCST:SceneManager.overFromLeftWithFade--> | + | SceneManager.overFromRightWithFade ''Slide over from the right with fading'' <br/><!-- GIDEROSCST:SceneManager.overFromRightWithFade Slide over from the right with fading--> |
− | SceneManager.overFromBottomWithFade<br/><!-- GIDEROSCST:SceneManager.overFromBottomWithFade--> | + | SceneManager.overFromLeftWithFade ''Slide over from the left with fading'' <br/><!-- GIDEROSCST:SceneManager.overFromLeftWithFade Slide over from the left with fading--> |
− | SceneManager.overFromTopWithFade<br/><!-- GIDEROSCST:SceneManager.overFromTopWithFade--> | + | SceneManager.overFromBottomWithFade ''Slide over from the bottom with fading'' <br/><!-- GIDEROSCST:SceneManager.overFromBottomWithFade Slide over from the bottom with fading--> |
− | SceneManager.fade<br/><!-- GIDEROSCST:SceneManager.fade--> | + | SceneManager.overFromTopWithFade ''Slide over from the top with fading'' <br/><!-- GIDEROSCST:SceneManager.overFromTopWithFade Slide over from the top with fading--> |
− | SceneManager.crossFade<br/><!-- GIDEROSCST:SceneManager.crossFade--> | + | SceneManager.fade ''Fade over'' <br/><!-- GIDEROSCST:SceneManager.fade Fade over--> |
− | SceneManager.flip<br/><!-- GIDEROSCST:SceneManager.flip--> | + | SceneManager.crossFade ''Cross fade'' <br/><!-- GIDEROSCST:SceneManager.crossFade Cross fade--> |
− | SceneManager.flipWithFade<br/><!-- GIDEROSCST:SceneManager.flipWithFade--> | + | SceneManager.flip ''Flip'' <br/><!-- GIDEROSCST:SceneManager.flip Flip--> |
− | SceneManager.flipWithShade<br/><!-- GIDEROSCST:SceneManager.flipWithShade--> | + | SceneManager.flipWithFade ''Flip with fading'' <br/><!-- GIDEROSCST:SceneManager.flipWithFade Flip with fading--> |
+ | SceneManager.flipWithShade ''Flip with shading'' <br/><!-- GIDEROSCST:SceneManager.flipWithShade Flip with shading--> | ||
|} | |} | ||
{{GIDEROS IMPORTANT LINKS}} | {{GIDEROS IMPORTANT LINKS}} |
Revision as of 21:33, 24 February 2021
Supported platforms:
Available since: 2020.2
Inherits from: Sprite
Description
An easy way to manage scenes.
require "scenemanager"
Note: works in pair with the Easing plugin
Example
How to declare and change scenes in your main.lua file
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)
Below you will find what a scene class looks like.
The Bare Bone of a Scene Class
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
A table of all transitions
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
}
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 |