Difference between revisions of "SceneManager"

From GiderosMobile
m
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
__NOTOC__
 
__NOTOC__
 
<!-- GIDEROSOBJ:SceneManager -->
 
<!-- GIDEROSOBJ:SceneManager -->
'''<translate>Supported platforms</translate>:''' [[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/>
+
'''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/>
'''<translate>Available since</translate>:''' 2020.2<br/>
+
'''Available since:''' 2020.2<br/>
'''<translate>Inherits from</translate>:''' [[Special:MyLanguage/Sprite|Sprite]]<br/>
+
'''Inherits from:''' [[Special:MyLanguage/Sprite|Sprite]]<br/>
  
 
=== Description ===
 
=== Description ===
An easy way to manage scenes.<br/>
+
An easy way to manage scenes.
'''Note''': works in pair with the [[Easing]] plugin
 
 
<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,
["level1"] = Level1,
+
["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 level1
+
-- from menu to level01
--scenemanager:changeScene("level1", 1, SceneManager.moveFromRight, easing.outBack)
+
--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;"|
=== <translate>Methods</translate> ===
+
=== Methods ===
[[Special:MyLanguage/SceneManager.new|SceneManager.new]] ''<translate>creates a new SceneManager object</translate>''<br/><!-- GIDEROSMTD:SceneManager.new(table) creates a new SceneManager object -->
+
[[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]] ''<translate>transitions to a scene</translate>''<br/><!-- GIDEROSMTD:SceneManager:changeScene(scene, duration, transition, ease, options) transitions to a scene -->
+
[[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;"|
=== <translate>Events</translate> ===
+
=== 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-->
=== <translate>Constants</translate> ===
+
 
[[Special:MyLanguage/SceneManager.moveFromRight|SceneManager.moveFromRight]]<br/><!-- GIDEROSCST:SceneManager.moveFromRight-->
+
=== Constants ===
[[Special:MyLanguage/SceneManager.moveFromLeft|SceneManager.moveFromLeft]]<br/><!-- GIDEROSCST:SceneManager.moveFromLeft-->
+
SceneManager.moveFromRight ''Move from the right'' <br/><!-- GIDEROSCST:SceneManager.moveFromRight Move from the right-->
[[Special:MyLanguage/SceneManager.moveFromBottom|SceneManager.moveFromBottom]]<br/><!-- GIDEROSCST:SceneManager.moveFromBottom-->
+
SceneManager.moveFromLeft ''Move from the left'' <br/><!-- GIDEROSCST:SceneManager.moveFromLeft Move from the left-->
[[Special:MyLanguage/SceneManager.moveFromTop|SceneManager.moveFromTop]]<br/><!-- GIDEROSCST:SceneManager.moveFromTop-->
+
SceneManager.moveFromBottom ''Move from the bottom'' <br/><!-- GIDEROSCST:SceneManager.moveFromBottom Move from the bottom-->
[[Special:MyLanguage/SceneManager.moveFromRightWithFade|SceneManager.moveFromRightWithFade]]<br/><!-- GIDEROSCST:SceneManager.moveFromRightWithFade-->
+
SceneManager.moveFromTop ''Move from the top'' <br/><!-- GIDEROSCST:SceneManager.moveFromTop Move from the top-->
[[Special:MyLanguage/SceneManager.moveFromLeftWithFade|SceneManager.moveFromLeftWithFade]]<br/><!-- GIDEROSCST:SceneManager.moveFromLeftWithFade-->
+
SceneManager.moveFromRightWithFade ''Move from the right with fading'' <br/><!-- GIDEROSCST:SceneManager.moveFromRightWithFade Move from the right with fading-->
[[Special:MyLanguage/SceneManager.moveFromBottomWithFade|SceneManager.moveFromBottomWithFade]]<br/><!-- GIDEROSCST:SceneManager.moveFromBottomWithFade-->
+
SceneManager.moveFromLeftWithFade ''Move from the left with fading'' <br/><!-- GIDEROSCST:SceneManager.moveFromLeftWithFade Move from the left with fading-->
[[Special:MyLanguage/SceneManager.moveFromTopWithFade|SceneManager.moveFromTopWithFade]]<br/><!-- GIDEROSCST:SceneManager.moveFromTopWithFade-->
+
SceneManager.moveFromBottomWithFade ''Move from the bottom with fading'' <br/><!-- GIDEROSCST:SceneManager.moveFromBottomWithFade Move from the bottom with fading-->
[[Special:MyLanguage/SceneManager.overFromRight|SceneManager.overFromRight]]<br/><!-- GIDEROSCST:SceneManager.overFromRight-->
+
SceneManager.moveFromTopWithFade ''Move from the top with fading'' <br/><!-- GIDEROSCST:SceneManager.moveFromTopWithFade Move from the top with fading-->
[[Special:MyLanguage/SceneManager.overFromLeft|SceneManager.overFromLeft]]<br/><!-- GIDEROSCST:SceneManager.overFromLeft-->
+
SceneManager.overFromRight ''Slide over from the right'' <br/><!-- GIDEROSCST:SceneManager.overFromRight Slide over from the right-->
[[Special:MyLanguage/SceneManager.overFromBottom|SceneManager.overFromBottom]]<br/><!-- GIDEROSCST:SceneManager.overFromBottom-->
+
SceneManager.overFromLeft ''Slide over from the left'' <br/><!-- GIDEROSCST:SceneManager.overFromLeft Slide over from the left-->
[[Special:MyLanguage/SceneManager.overFromTop|SceneManager.overFromTop]]<br/><!-- GIDEROSCST:SceneManager.overFromTop-->
+
SceneManager.overFromBottom ''Slide over from the bottom'' <br/><!-- GIDEROSCST:SceneManager.overFromBottom Slide over from the bottom-->
[[Special:MyLanguage/SceneManager.overFromRightWithFade|SceneManager.overFromRightWithFade]]<br/><!-- GIDEROSCST:SceneManager.overFromRightWithFade-->
+
SceneManager.overFromTop ''Slide over from the top'' <br/><!-- GIDEROSCST:SceneManager.overFromTop Slide over from the top-->
[[Special:MyLanguage/SceneManager.overFromLeftWithFade|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-->
[[Special:MyLanguage/SceneManager.overFromBottomWithFade|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-->
[[Special:MyLanguage/SceneManager.overFromTopWithFade|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-->
[[Special:MyLanguage/SceneManager.fade|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-->
[[Special:MyLanguage/SceneManager.crossFade|SceneManager.crossFade]]<br/><!-- GIDEROSCST:SceneManager.crossFade-->
+
SceneManager.fade ''Fade over'' <br/><!-- GIDEROSCST:SceneManager.fade Fade over-->
[[Special:MyLanguage/SceneManager.flip|SceneManager.flip]]<br/><!-- GIDEROSCST:SceneManager.flip-->
+
SceneManager.crossFade ''Cross fade'' <br/><!-- GIDEROSCST:SceneManager.crossFade Cross fade-->
[[Special:MyLanguage/SceneManager.flipWithFade|SceneManager.flipWithFade]]<br/><!-- GIDEROSCST:SceneManager.flipWithFade-->
+
SceneManager.flip ''Flip'' <br/><!-- GIDEROSCST:SceneManager.flip Flip-->
[[Special:MyLanguage/SceneManager.flipWithShade|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 20:33, 24 February 2021

Supported platforms: Platform android.pngPlatform ios.pngPlatform pc.pngPlatform mac.pngPlatform winrt.pngPlatform win32.png
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
}

Methods

SceneManager.new creates a new SceneManager object

SceneManager:changeScene transitions to a scene

Events

"enterBegin" Scene is being entered
"enterEnd" Scene has been entered
"exitBegin" Scene is being exited
"exitEnd" Scene has been exited

Constants

SceneManager.moveFromRight Move from the right
SceneManager.moveFromLeft Move from the left
SceneManager.moveFromBottom Move from the bottom
SceneManager.moveFromTop Move from the top
SceneManager.moveFromRightWithFade Move from the right with fading
SceneManager.moveFromLeftWithFade Move from the left with fading
SceneManager.moveFromBottomWithFade Move from the bottom with fading
SceneManager.moveFromTopWithFade Move from the top with fading
SceneManager.overFromRight Slide over from the right
SceneManager.overFromLeft Slide over from the left
SceneManager.overFromBottom Slide over from the bottom
SceneManager.overFromTop Slide over from the top
SceneManager.overFromRightWithFade Slide over from the right with fading
SceneManager.overFromLeftWithFade Slide over from the left with fading
SceneManager.overFromBottomWithFade Slide over from the bottom with fading
SceneManager.overFromTopWithFade Slide over from the top with fading
SceneManager.fade Fade over
SceneManager.crossFade Cross fade
SceneManager.flip Flip
SceneManager.flipWithFade Flip with fading
SceneManager.flipWithShade Flip with shading