Hello everyone! Im currently working on an English educational game using Corona and an awesome set of developer tools from Bogdan Vladu called **Level Helper, Sprite Helper** and **Corona Complete**. The game project is coming along quite nicely, however Ive hit a bit of a snag when tying to preload certain levels using storyboard.loadScene( ).
The preload does work correctly one 1 level that I am currently using for testing purposes only. This level is directly loaded from the main menu of the game. When the level loads, the physics automatically kick in for that particular level and the game runs fine.
The problem seems to be with levels that are being preloaded from the sub-menu (level select menu) that comes after the main menu. For some reason, the physics arent kicking in until a few seconds after the level has been loaded onto the screen, which either causes the character to fall of the screen or for him to run through the entire board with no collisions... I cant figure out why the physics on call from storyboard.loadScene( ) works fine from a direct call from the main menu, but fails from the level select menu…
My game file structure looks like this:
main.lua -> companyLogo.lua -> cre8tivemvLogo.lua -> menu.lua (calls a preload to the “free mode” level of the game * the one that physics load fine on) -> worldSelect.lua (no preload calls) -> levelSelect.lua (level that has preload calls for game “story mode” levels 1 ~ 9 * the levels where physics are failing to start).
Here is the code for my menu.lua file ( I know, the code is a mess and all over the place because I`m still playing around with stuff and trying to make a template that has all of the basic elements I need for later games… I will organize / delete all of the unnecessary code + notes later )
--------------------------------------------
--
-- Wild FIRE: Spell-Jammer
-- by Walter Ragland (Wylde Blade Media C.M.V.)
-- http://wwww.cre8tivemv.com
-- Version: 1.0
-----------------------------------------------------------------------------------------
--
-- menu.lua
--
-----------------------------------------------------------------------------------------
------- REQUIRED LIBRARIES ------------------
local storyboard = require( "storyboard" )
local scene = storyboard.newScene()
display.setStatusBar( display.HiddenStatusBar )
local widget = require "widget"
local ui = require ("ui")
local physics = require("physics")
physics.start(); physics.pause()
physics.setDrawMode( "hybrid" )
--physics.setDrawMode( "normal" )
physics.setGravity( 0, 10 );
local fps = require("fps");
-----------------------------------------------------------------------------------------
-- BEGINNING OF YOUR IMPLEMENTATION
--
-- NOTE: Code outside of listener functions (below) will only be executed once,
-- unless storyboard.removeScene() is called.
--
-----------------------------------------------------------------------------------------
-- Called when the scene's view does not exist:
function scene:createScene( event )
local group = self.view
--------------------------------------------
-- Preload ALL Scenes Here
local level1\_01 = storyboard.loadScene( "level1\_01", true )
local level1\_01 = storyboard.loadScene( "mainCoding", true )
----- REQUIRED DECLARATIONS ---------
--local freeModeBtn
--local storyModeBtn
local musicBtn
--local leaderBtn
--local webBtn
--local netBtn
--local gamesBtn
local bgm
----- REQUIRED VARIABLES ---------
----- REQUIRED LEVEL HELPER STUFF ---------
require "LevelHelper.LevelHelperLoader"
--require "LevelHelper.Nodes.LHAnimationNode"
loader = LevelHelperLoader:initWithContentOfFile("mainMenu\_01.plhs")
loader:instantiateObjects()
--loader:createPhysicBoundaries()
----- REQUIRED LEVEL HELPER GRAPHICSS ---------
local freeModeBtn = loader:spriteWithUniqueName("freeModeBtn")
if(nil == freeModeBtn)then print("Could not find freeModeBtn.") end
local storyModeBtn = loader:spriteWithUniqueName("storyModeBtn")
if(nil == storyModeBtn)then print("Could not find storyModeBtn.") end
local webBtn = loader:spriteWithUniqueName("webBtn")
if(nil == webBtn)then print("Could not find webBtn.") end
local netBtn = loader:spriteWithUniqueName("netBtn")
if(nil == netBtn)then print("Could not find netBtn.") end
----- REQUIRED LAYOUT GRAPHICSS ---------
-- display a background image
local background = display.newImageRect( "background.jpg", display.contentWidth, display.contentHeight )
background:setReferencePoint( display.TopLeftReferencePoint )
background.x, background.y = 0, 0
-- create/position logo/title image on upper-half of the screen
local titleLogo = display.newImageRect( "logo.png", 264, 42 )
titleLogo:setReferencePoint( display.CenterReferencePoint )
titleLogo.x = display.contentWidth \* 0.5
titleLogo.y = 100
----- REQUIRED IMAGES ---------
----- REQUIRED SOUNDS ---------
--- CONVERSATION TEXT AND SOUNDS ---
--\*\*local story = ""
-- \*\*\* dialogue \*\*\* --
-- \*\*\* dialogue \*\*\* --
-- conversation text box and shadow 1
--\*\*local conversationText1 = display.newText(story, 150, 150, native.systemFontBold, 30)
--\*\*conversationText1:setTextColor (255,255,255)
--\*\*conversationText1.isVisible = false
--\*\*local conversationTextShadow1 = display.newText("", 155, 154, native.systemFontBold, 30)
--\*\*conversationTextShadow1:setTextColor(0,0,255,50)
--\*\*conversationTextShadow1.isVisible = false
-- Character Text Boxes
-- player Text
--\*\*local playerTextBox = display.newText("", 150, 500, native.systemFontBold, 18)
--\*\*playerTextBox:setTextColor (255,255,255)
--\*\*playerTextBox.isVisible = false
--\*\*local playerTextBoxShadow = display.newText("", 154, 504, native.systemFontBold, 18)
--\*\*playerTextBoxShadow:setTextColor(0,0,255,50)
--\*\*playerTextBox.isVisible = false
----- REQUIRED TEXT ---------
----- REQUIRED LISTENER EVENTS FOR BUTTONS ---------
-- 'onRelease' event listener for playBtn
local function onFreeModeBtnRelease()
-- go to stageselect.lua scene
removeButtons()
--storyboard.purgeScene( "level1\_01" )
--storyboard.gotoScene( "level1\_01", "fade", 500 )
storyboard.purgeScene( "worldSelect" )
storyboard.gotoScene( "worldSelect", "slideLeft", 200 )
clearAll()
--audio.play(clickSound)
audio.stop(bgm)
return true -- indicates successful touch
end
-- 'onRelease' event listener for infoBtn
local function onStoryModeBtnRelease()
-- go to help1.lua scene
removeButtons()
--storyboard.purgeScene( "v\_StoryBoard1" )
--storyboard.gotoScene( "v\_StoryBoard1", "slideLeft", 200 )
---storyboard.purgeScene( "characterSelect" )
--storyboard.gotoScene( "characterSelect", "slideLeft", 200 )
clearAll()
--audio.play(clickSound)
audio.stop(bgm)
return true -- indicates successful touch
end
-- 'onRelease' event listener for musicBtn
local function onMusicBtnRelease()
-- go to leaderboard.lua scene
--removeButtons()
--storyboard.gotoScene( "leaderboard", "slideLeft", 200 )
--clearAll()
--audio.play(clickSound)
audio.stop(bgm)
return true -- indicates successful touch
end
-- 'onRelease' event listener for leaderBtn
----local function onLeaderBtnRelease()
-- go to leaderboard.lua scene
--removeButtons()
--storyboard.gotoScene( "leaderboard", "slideLeft", 200 )
--clearAll()
--audio.play(clickSound)
--audio.stop(bgm)
--return true -- indicates successful touch
--end
-- 'onRelease' event listener for webBtn
local function onWebBtnRelease()
-- go to web.lua scene
--removeButtons()
--storyboard.purgeScene( "webLink" )
--storyboard.gotoScene( "webLink", "fade", 500 )
--clearAll()
system.openURL( "http://cre8tivemv.com/WF" )
--webLink.alpha = 0.005
--audio.play(clickSound)
--audio.stop(bgm)
return true -- indicates successful touch
end
-- 'onRelease' event listener for netBtn
local function onNetBtnRelease()
-- go to netconnect.lua scene
--removeButtons()
--storyboard.purgeScene( "facebookConnect" )
--storyboard.gotoScene( "facebookConnect", "fade", 500 )
--clearAll()
system.openURL( "http://facebook.com/pages/Cre8tive-Media-Vault/220074551405659" )
--audio.play(clickSound)
--audio.stop(bgm)
return true -- indicates successful touch
end
-- 'onRelease' event listener for gamesBtn
-----local function onGamesBtnRelease()
-- go to games.lua scene
-- removeButtons()
--storyboard.gotoScene( "games", "slideLeft", 200 )
--audio.play(clickSound)
--audio.stop(bgm)
--return true -- indicates successful touch
--end
----- MASTER TEST BUTTON ---- DELETE ONCE GAME FINISHED
local function onMasterTestBtnRelease()
-- go to help1.lua scene
removeButtons()
--storyboard.purgeScene( "v\_StoryBoard1" )
--storyboard.gotoScene( "v\_StoryBoard1", "slideLeft", 200 )
storyboard.purgeScene( "mainCoding" )
storyboard.gotoScene( "mainCoding", "crossFade", 200 )
clearAll()
--audio.play(clickSound)
audio.stop(bgm)
return true -- indicates successful touch
end
----- REQUIRED FUNCTIONS ---------
--- GRAPHICS ANIMATIONS & TRANSITIONS ---
--- SHOW ENEMIES FUNCTION ----
----- REQUIRED WIDGET DECLARATIONS ---------
-- create a widget button (which will loads the Free Mode of the game .lua on release)
freeModeBtn = widget.newButton{
--label="Play Now",
--labelColor = { default={255}, over={128} },
default="Images/freeModeBtn.png",
over="Images/freeModeBtn.png",
width=130, height=60,
onRelease = onFreeModeBtnRelease -- event listener function
}
freeModeBtn:setReferencePoint( display.CenterReferencePoint )
freeModeBtn.x = display.contentWidth\*0.5
freeModeBtn.y = display.contentHeight - 115
freeModeBtn.alpha = 1
freeModeBtn.isVisible = true
-- create a widget button (which will loads the Story Mode of the game .lua on release)
storyModeBtn = widget.newButton{
--label="Play Now",
--labelColor = { default={255}, over={128} },
default="Images/storyModeButton.png",
over="Images/storyModeButton.png",
width=130, height=60,
onRelease = onStoryModeBtnRelease -- event listener function
}
storyModeBtn:setReferencePoint( display.CenterReferencePoint )
storyModeBtn.x = display.contentWidth\*0.5
storyModeBtn.y = display.contentHeight - 50
storyModeBtn.alpha = 1
storyModeBtn.isVisible = true
-- create a widget button (which will loads the Story Mode of the game .lua on release)
webBtn = widget.newButton{
--label="Play Now",
--labelColor = { default={255}, over={128} },
default="Images/webSiteButton1.png",
over="Images/webSiteButton1.png",
width=154, height=40,
onRelease = onWebBtnRelease -- event listener function
}
webBtn:setReferencePoint( display.CenterReferencePoint )
webBtn.x = display.contentWidth\*0.5 + 190
webBtn.width = 50
webBtn.height = 50
webBtn.y = display.contentHeight - 43
webBtn.alpha = 1
webBtn.isVisible = true
-- create a widget button (which will loads the Story Mode of the game .lua on release)
netBtn = widget.newButton{
--label="Play Now",
--labelColor = { default={255}, over={128} },
default="Images/faceBookButton1.png",
over="Images/faceBookButton1.png",
width=154, height=40,
onRelease = onNetBtnRelease -- event listener function
}
netBtn:setReferencePoint( display.CenterReferencePoint )
netBtn.x = display.contentWidth\*0.5 + 250
netBtn.width = 50
netBtn.height = 50
netBtn.y = display.contentHeight - 43
netBtn.alpha = 1
netBtn.isVisible = true
---- MASTER FILE TESTING wiDSGET ----
-- create a widget button (which will loads the Story Mode of the game .lua on release)
masterTestBtn = widget.newButton{
--label="Play Now",
--labelColor = { default={255}, over={128} },
default="Images/storyModeButton.png",
over="Images/storyModeButton.png",
width=100, height=100,
onRelease = onMasterTestBtnRelease -- event listener function
}
masterTestBtn:setReferencePoint( display.CenterReferencePoint )
masterTestBtn.x = 400
masterTestBtn.y = display.contentHeight - 250
masterTestBtn.alpha = 0.05
masterTestBtn.isVisible = true
-------------------------------------------------------------------------
----- CLEAR FUNCTIONS ---------
function removeButtons()
--freeModeBtn.y = 800
--\*\*freeModeBtn:removeSelf() -- widgets must be manually removed
--\*\*freeModeBtn = nil
--storyModeBtn.y = 800
--\*\*storyModeBtn:removeSelf()
--\*\*storyModeBtn = nil
--webBtn.y = 800
--\*\*webBtn:removeSelf()
--\*\*webBtn = nil
--netBtn.y = 800
--\*\*netBtn:removeSelf()
--\*\*netBtn = nil
--playBtn:removeSelf()
--playBtn = nil
end
--
function clearAll()
background:removeSelf()
titleLogo:removeSelf()
--freeModeBtn:removeSelf()
--storyModeBtn:removeSelf()
--webBtn:removeSelf()
--netBtn:removeSelf()
end
----- TIMER FUNCTIONS -----
----- ENDING FUNCTIONS -------
----- CALL FUNCTIONS ---------
----- GROUP DECLARATIONS ---------
group:insert( background )
group:insert( titleLogo )
--group:insert( playBtn )
end
-- Called immediately after scene has moved onscreen:
function scene:enterScene( event )
local group = self.view
-- INSERT code here (e.g. start timers, load audio, start listeners, etc.)
end
-- Called when scene is about to move offscreen:
function scene:exitScene( event )
local group = self.view
-- INSERT code here (e.g. stop timers, remove listenets, unload sounds, etc.)
end
-- If scene's view is removed, scene:destroyScene() will be called just prior to:
function scene:destroyScene( event )
local group = self.view
---- REMOVE WIDGETS ----
removeButtons()
--\*\*if playBtn then
--\*\*playBtn:removeSelf() -- widgets must be manually removed
--\*\*playBtn = nil
--\*\*end
end
-----------------------------------------------------------------------------------------
-- END OF YOUR IMPLEMENTATION
-----------------------------------------------------------------------------------------
-- "createScene" event is dispatched if scene's view does not exist
scene:addEventListener( "createScene", scene )
-- "enterScene" event is dispatched whenever scene transition has finished
scene:addEventListener( "enterScene", scene )
-- "exitScene" event is dispatched whenever before next scene's transition begins
scene:addEventListener( "exitScene", scene )
-- "destroyScene" event is dispatched before view is unloaded, which can be
-- automatically unloaded in low memory situations, or explicitly via a call to
-- storyboard.purgeScene() or storyboard.removeScene().
scene:addEventListener( "destroyScene", scene )
-----------------------------------------------------------------------------------------
return scene
and here is the code for my levelSelect.lua .
-----------------------------------------------------------------------------------------
--
-- levelSelect\_1.lua
--
-----------------------------------------------------------------------------------------
local storyboard = require( "storyboard" )
local scene = storyboard.newScene()
-- include Corona's "widget" library
local widget = require "widget"
-- include Corona's "physics" library
local ui = require ("ui")
local physics = require("physics")
local fps = require("fps");
--physics.start()--; physics.pause()
--comment next line to disable debug drawing
--physics.setDrawMode( "hybrid" )
display.setStatusBar( display.HiddenStatusBar )
physics.setGravity( 0, 10 );
--------------------------------------------
require "LevelHelper.LevelHelperLoader"
--require "LevelHelper.Nodes.LHAnimationNode"
loader = LevelHelperLoader:initWithContentOfFile("levelSelect.plhs")
loader:instantiateObjects()
--loader:createPhysicBoundaries()
--------------------------------------------
--- purge levels ----
--storyboard.purgeScene("level1\_01")
--Preload Scenes
--local level1\_01 = storyboard.loadScene( "level1\_01", true )
-- Level Helper sprite Declarations
--local level1Btn = loader:spriteWithUniqueName("level1Btn")
--if(nil == level1Btn)then print("Could not find level1Btn.") end
--- VARIABLE DECLRATIONS
level1\_cleared = false
level2\_cleared = false
level3\_cleared = false
-----
function checkLevelCleared()
if (level\_1\_clear == false) then
end
end
---- VARIABLES FOR SCORING -------
star1\_Gain = 2500
star2\_Gain = 75000
star3\_Gain = 150000
----- LEVEL HELPER GRAFIC CALLS ---
-- level Buttons
local level1Button = loader:spriteWithUniqueName("level1Button")
if(nil == level1Button)then print("Could not find level1Button.") end
level1Button.myName = "level1Button"
level1Button.isVisible = true
local level2Button = loader:spriteWithUniqueName("level2Button")
if(nil == level2Button)then print("Could not find level2Button.") end
level2Button.myName = "level2Button"
level2Button.isVisible = true
local level3Button = loader:spriteWithUniqueName("level3Button")
if(nil == level3Button)then print("Could not find level3Button.") end
level3Button.myName = "level3Button"
level3Button.isVisible = true
local level4Button = loader:spriteWithUniqueName("level4Button")
if(nil == level4Button)then print("Could not find level4Button.") end
level4Button.myName = "level4Button"
level4Button.isVisible = true
local level5Button = loader:spriteWithUniqueName("level5Button")
if(nil == level5Button)then print("Could not find level5Button.") end
level5Button.myName = "level5Button"
level5Button.isVisible = true
local level6Button = loader:spriteWithUniqueName("level6Button")
if(nil == level6Button)then print("Could not find level6Button.") end
level6Button.myName = "level6Button"
level6Button.isVisible = true
local level7Button = loader:spriteWithUniqueName("level7Button")
if(nil == level7Button)then print("Could not find level7Button.") end
level7Button.myName = "level7Button"
level7Button.isVisible = true
local level8Button = loader:spriteWithUniqueName("level8Button")
if(nil == level8Button)then print("Could not find level8Button.") end
level8Button.myName = "level8Button"
level8Button.isVisible = true
local level9Button = loader:spriteWithUniqueName("level9Button")
if(nil == level9Button)then print("Could not find level9Button.") end
level9Button.myName = "level9Button"
level9Button.isVisible = true
---- Numbers
local numOne = loader:spriteWithUniqueName("numOne")
if(nil == numOne)then print("Could not find numOne.") end
numOne.myName = "numOne"
numOne.isVisible = true
local numTwo = loader:spriteWithUniqueName("numTwo")
if(nil == numTwo)then print("Could not find numTwo.") end
numTwo.myName = "numTwo"
numTwo.isVisible = false
local numThree = loader:spriteWithUniqueName("numThree")
if(nil == numThree)then print("Could not find numThree.") end
numThree.myName = "numThree"
numThree.isVisible = false
local numFour = loader:spriteWithUniqueName("numFour")
if(nil == numFour)then print("Could not find numFour.") end
numFour.myName = "numFour"
numFour.isVisible = false
local numFive = loader:spriteWithUniqueName("numFive")
if(nil == numFive)then print("Could not find numFive.") end
numFive.myName = "numFive"
numFive.isVisible = false
local numSix = loader:spriteWithUniqueName("numSix")
if(nil == numSix)then print("Could not find numSix.") end
numSix.myName = "numSix"
numSix.isVisible = false
local numSeven = loader:spriteWithUniqueName("numSeven")
if(nil == numSeven)then print("Could not find numSeven.") end
numSeven.myName = "numSeven"
numSeven.isVisible = false
local numEight = loader:spriteWithUniqueName("numEight")
if(nil == numEight)then print("Could not find numEight.") end
numEight.myName = "numEight"
numEight.isVisible = false
local numNine = loader:spriteWithUniqueName("numNine")
if(nil == numNine)then print("Could not find numNine.") end
numNine.myName = "numNine"
numNine.isVisible = false
--- Level Locks -----
local levelLock\_1 = loader:spriteWithUniqueName("levelLock\_1")
if(nil == levelLock\_1)then print("Could not find levelLock\_1.") end
levelLock\_1.myName = "levelLock\_1"
levelLock\_1.isVisible = false
local levelLock\_2 = loader:spriteWithUniqueName("levelLock\_2")
if(nil == levelLock\_2)then print("Could not find levelLock\_2.") end
levelLock\_2.myName = "levelLock\_2"
levelLock\_2.isVisible = true
local levelLock\_3 = loader:spriteWithUniqueName("levelLock\_3")
if(nil == levelLock\_3)then print("Could not find levelLock\_3.") end
levelLock\_3.myName = "levelLock\_3"
levelLock\_3.isVisible = true
local levelLock\_4 = loader:spriteWithUniqueName("levelLock\_4")
if(nil == levelLock\_4)then print("Could not find levelLock\_4.") end
levelLock\_4.myName = "levelLock\_4"
levelLock\_4.isVisible = true
local levelLock\_5 = loader:spriteWithUniqueName("levelLock\_5")
if(nil == levelLock\_5)then print("Could not find levelLock\_5.") end
levelLock\_5.myName = "levelLock\_5"
levelLock\_5.isVisible = true
local levelLock\_6 = loader:spriteWithUniqueName("levelLock\_6")
if(nil == levelLock\_6)then print("Could not find levelLock\_6.") end
levelLock\_6.myName = "levelLock\_6"
levelLock\_6.isVisible = true
local levelLock\_7 = loader:spriteWithUniqueName("levelLock\_7")
if(nil == levelLock\_7)then print("Could not find levelLock\_7.") end
levelLock\_7.myName = "levelLock\_7"
levelLock\_7.isVisible = true
local levelLock\_8 = loader:spriteWithUniqueName("levelLock\_8")
if(nil == levelLock\_8)then print("Could not find levelLock\_8.") end
levelLock\_8.myName = "levelLock\_8"
levelLock\_8.isVisible = true
local levelLock\_9 = loader:spriteWithUniqueName("levelLock\_9")
if(nil == levelLock\_9)then print("Could not find levelLock\_9.") end
levelLock\_9.myName = "levelLock\_9"
levelLock\_9.isVisible = true
--- Stars
local star1a = loader:spriteWithUniqueName("star1a")
if(nil == star1a)then print("Could not find star1a.") end
star1a.myName = "star1a"
star1a.isVisible = false
local star1b = loader:spriteWithUniqueName("star1b")
if(nil == star1b)then print("Could not find star1b.") end
star1b.myName = "star1b"
star1b.isVisible = false
local star1c = loader:spriteWithUniqueName("star1c")
if(nil == star1c)then print("Could not find star1c.") end
star1c.myName = "star1c"
star1c.isVisible = false
local star2a = loader:spriteWithUniqueName("star2a")
if(nil == star2a)then print("Could not find star2a.") end
star2a.myName = "star2a"
star2a.isVisible = false
local star2b = loader:spriteWithUniqueName("star2b")
if(nil == star2b)then print("Could not find star2b.") end
star2b.myName = "star2b"
star2b.isVisible = false
local star2c = loader:spriteWithUniqueName("star2c")
if(nil == star2c)then print("Could not find star2c.") end
star2c.myName = "star2c"
star2c.isVisible = false
local star3a = loader:spriteWithUniqueName("star3a")
if(nil == star3a)then print("Could not find star3a.") end
star3a.myName = "star3a"
star3a.isVisible = false
local star3b = loader:spriteWithUniqueName("star3b")
if(nil == star3b)then print("Could not find star3b.") end
star3b.myName = "star3b"
star3b.isVisible = false
local star3c = loader:spriteWithUniqueName("star3c")
if(nil == star3c)then print("Could not find star3c.") end
star3c.myName = "star3c"
star3c.isVisible = false
local star4a = loader:spriteWithUniqueName("star4a")
if(nil == star4a)then print("Could not find star4a.") end
star4a.myName = "star4a"
star4a.isVisible = false
local star4b = loader:spriteWithUniqueName("star4b")
if(nil == star4b)then print("Could not find star4b.") end
star4b.myName = "star4b"
star4b.isVisible = false
local star4c = loader:spriteWithUniqueName("star4c")
if(nil == star4c)then print("Could not find star4c.") end
star4c.myName = "star4c"
star4c.isVisible = false
local star5a = loader:spriteWithUniqueName("star5a")
if(nil == star5a)then print("Could not find star5a.") end
star5a.myName = "star5a"
star5a.isVisible = false
local star5b = loader:spriteWithUniqueName("star5b")
if(nil == star5b)then print("Could not find star5b.") end
star5b.myName = "star5b"
star5b.isVisible = false
local star5c = loader:spriteWithUniqueName("star5c")
if(nil == star5c)then print("Could not find star5c.") end
star5c.myName = "star5c"
star5c.isVisible = false
local star6a = loader:spriteWithUniqueName("star6a")
if(nil == star6a)then print("Could not find star6a.") end
star6a.myName = "star6a"
star6a.isVisible = false
local star6b = loader:spriteWithUniqueName("star6b")
if(nil == star6b)then print("Could not find star6b.") end
star6b.myName = "star6b"
star6b.isVisible = false
local star6c = loader:spriteWithUniqueName("star6c")
if(nil == star6c)then print("Could not find star6c.") end
star6c.myName = "star6c"
star6c.isVisible = false
local star7a = loader:spriteWithUniqueName("star7a")
if(nil == star7a)then print("Could not find star7a.") end
star7a.myName = "star7a"
star7a.isVisible = false
local star7b = loader:spriteWithUniqueName("star7b")
if(nil == star7b)then print("Could not find star7b.") end
star7b.myName = "star7b"
star7b.isVisible = false
local star7c = loader:spriteWithUniqueName("star7c")
if(nil == star7c)then print("Could not find star7c.") end
star7c.myName = "star7c"
star7c.isVisible = false
local star8a = loader:spriteWithUniqueName("star8a")
if(nil == star8a)then print("Could not find star8a.") end
star8a.myName = "star8a"
star8a.isVisible = false
local star8b = loader:spriteWithUniqueName("star8b")
if(nil == star8b)then print("Could not find star8b.") end
star8b.myName = "star8b"
star8b.isVisible = false
local star8c = loader:spriteWithUniqueName("star8c")
if(nil == star8c)then print("Could not find star8c.") end
star8c.myName = "star8c"
star8c.isVisible = false
local star9a = loader:spriteWithUniqueName("star9a")
if(nil == star9a)then print("Could not find star9a.") end
star9a.myName = "star9a"
star9a.isVisible = false
local star9b = loader:spriteWithUniqueName("star9b")
if(nil == star9b)then print("Could not find star9b.") end
star9b.myName = "star9b"
star9b.isVisible = false
local star9c = loader:spriteWithUniqueName("star9c")
if(nil == star9c)then print("Could not find star9c.") end
star9c.myName = "star9c"
star9c.isVisible = false
---- BUTTON DECLARATIONS
-- 'onRelease' event listener for playBtn
function onLevel\_1\_BtnRelease()
-- go to level1.lua scene
--\*\*storyboard.purgeScene("level1\_01")
--\*\*storyboard.gotoScene( "level1\_01", "fade", 500 )
storyboard.removeScene("level1\_01")
storyboard.purgeScene("level1\_01\_loader")
storyboard.gotoScene( "level1\_01\_loader", "fade", 500 )
--storyboard.gotoScene( "mainCoding", "fade", 500 )
return true -- indicates successful touch
end
-------
-- 'onRelease' event listener for playBtn
function onLevel\_2\_BtnRelease()
-- go to level1.lua scene
storyboard.purgeScene("level1\_02")
storyboard.gotoScene( "level1\_02", "fade", 500 )
return true -- indicates successful touch
end
-------
-- 'onRelease' event listener for playBtn
function onLevel\_3\_BtnRelease()
-- go to level1.lua scene
storyboard.purgeScene("level1\_03")
storyboard.gotoScene( "level1\_03", "fade", 500 )
return true -- indicates successful touch
end
------
-- 'onRelease' event listener for playBtn
function onLevel\_4\_BtnRelease()
-- go to level1.lua scene
storyboard.purgeScene("level1\_04")
storyboard.gotoScene( "level1\_04", "fade", 500 )
return true -- indicates successful touch
end
----
-- 'onRelease' event listener for playBtn
function onLevel\_5\_BtnRelease()
-- go to level1.lua scene
storyboard.purgeScene("level1\_05")
storyboard.gotoScene( "level1\_05", "fade", 500 )
return true -- indicates successful touch
end
----
-- 'onRelease' event listener for playBtn
function onLevel\_6\_BtnRelease()
-- go to level1.lua scene
storyboard.purgeScene("level1\_06")
storyboard.gotoScene( "level1\_06", "fade", 500 )
return true -- indicates successful touch
end
------
-- 'onRelease' event listener for playBtn
function onLevel\_7\_BtnRelease()
-- go to level1.lua scene
storyboard.purgeScene("level1\_07")
storyboard.gotoScene( "level1\_07", "fade", 500 )
return true -- indicates successful touch
end
-------
-- 'onRelease' event listener for playBtn
function onLevel\_8\_BtnRelease()
-- go to level1.lua scene
storyboard.purgeScene("level1\_08")
storyboard.gotoScene( "level1\_08", "fade", 500 )
return true -- indicates successful touch
end
-------
-- 'onRelease' event listener for playBtn
function onLevel\_9\_BtnRelease()
-- go to level1.lua scene
storyboard.purgeScene("level1\_09")
storyboard.gotoScene( "level1\_09", "fade", 500 )
return true -- indicates successful touch
end
-------------------
-- 'onRelease' event listener for webBtn
local function onWebBtnRelease()
-- go to web.lua scene
--removeButtons()
--storyboard.purgeScene( "webLink" )
--storyboard.gotoScene( "webLink", "fade", 500 )
--clearAll()
system.openURL( "http://cre8tivemv.com/WF" )
--webLink.alpha = 0.005
--audio.play(clickSound)
--audio.stop(bgm)
return true -- indicates successful touch
end
-- 'onRelease' event listener for netBtn
local function onNetBtnRelease()
-- go to netconnect.lua scene
--removeButtons()
--storyboard.purgeScene( "facebookConnect" )
--storyboard.gotoScene( "facebookConnect", "fade", 500 )
--clearAll()
system.openURL( "http://facebook.com/pages/Cre8tive-Media-Vault/220074551405659" )
--audio.play(clickSound)
--audio.stop(bgm)
return true -- indicates successful touch
end
--------
function playLevel(event)
scene:destroyScene()
--storyboard.gotoScene( "game00b", "fade", 500 )
end
----
local onTouch = function( event )
if(event.phase == "began")then
playLevel()
--storyboard.gotoScene( "game00b", "fade", 500 )
end
end
Runtime:addEventListener( "touch", onTouch )
-----------------------------------------------------------------------------------------
-- BEGINNING OF YOUR IMPLEMENTATION
--
-- NOTE: Code outside of listener functions (below) will only be executed once,
-- unless storyboard.removeScene() is called.
--
-----------------------------------------------------------------------------------------
-- Called when the scene's view does not exist:
function scene:createScene( event )
local group = self.view
-- display a background image
local background = display.newImageRect( "background.jpg", display.contentWidth, display.contentHeight )
background:setReferencePoint( display.TopLeftReferencePoint )
background.x, background.y = 0, 0
-- create/position logo/title image on upper-half of the screen
local titleLogo = display.newImageRect( "logo.png", 264, 42 )
titleLogo:setReferencePoint( display.CenterReferencePoint )
titleLogo.x = display.contentWidth \* 0.5
titleLogo.y = 100
---- BUTTON WIDGETS -----
-- create a widget button (which will loads level1.lua on release)
level1Btn = widget.newButton{
--label="Pause",
--labelColor = { default={255}, over={128} },
default="Images/levelButton.png",
over="Images/levelButton.png",
width=75, height=75,
onRelease = onLevel\_1\_BtnRelease -- event listener function
}
level1Btn:setReferencePoint( display.TopLeftReferencePoint )
level1Btn.x = 35
level1Btn.y = 25
--level1Btn.x = display.contentWidth\*0.5 + 208
--level1Btn.y = display.contentHeight - 288
level1Btn.alpha = 1
level1Btn.isVisible = true
-- create a widget button (which will loads level1.lua on release)
level2Btn = widget.newButton{
--label="Pause",
--labelColor = { default={255}, over={128} },
default="Images/levelButton.png",
over="Images/levelButton.png",
width=75, height=75,
onRelease = onLevel\_2\_BtnRelease -- event listener function
}
level2Btn:setReferencePoint( display.TopLeftReferencePoint )
level2Btn.x = 110
level2Btn.y = 25
--level2Btn.x = display.contentWidth\*0.5 + 208
--level2Btn.y = display.contentHeight - 288
level2Btn.alpha = 1
level2Btn.isVisible = true
-- create a widget button (which will loads level1.lua on release)
level3Btn = widget.newButton{
--label="Pause",
--labelColor = { default={255}, over={128} },
default="Images/levelButton.png",
over="Images/levelButton.png",
width=75, height=75,
onRelease = onLevel\_3\_BtnRelease -- event listener function
}
level3Btn:setReferencePoint( display.TopLeftReferencePoint )
level3Btn.x = 190
level3Btn.y = 600
--level3Btn.x = display.contentWidth\*0.5 + 208
--level3Btn.y = display.contentHeight - 288
level3Btn.alpha = 1
level3Btn.isVisible = true
-- create a widget button (which will loads level1.lua on release)
level4Btn = widget.newButton{
--label="Pause",
--labelColor = { default={255}, over={128} },
default="Images/levelButton.png",
over="Images/levelButton.png",
width=75, height=75,
onRelease = onLevel\_4\_BtnRelease -- event listener function
}
level4Btn:setReferencePoint( display.TopLeftReferencePoint )
level4Btn.x = 35
level4Btn.y = 105
--level4Btn.x = display.contentWidth\*0.5 + 208
--level4Btn.y = display.contentHeight - 288
level4Btn.alpha = 1
level4Btn.isVisible = true
-- create a widget button (which will loads level1.lua on release)
level5Btn = widget.newButton{
--label="Pause",
--labelColor = { default={255}, over={128} },
default="Images/levelButton.png",
over="Images/levelButton.png",
width=75, height=75,
onRelease = onLevel\_5\_BtnRelease -- event listener function
}
level5Btn:setReferencePoint( display.TopLeftReferencePoint )
level5Btn.x = 110
level5Btn.y = 105
--level5Btn.x = display.contentWidth\*0.5 + 208
--level5Btn.y = display.contentHeight - 288
level5Btn.alpha = 1
level5Btn.isVisible = true
-- create a widget button (which will loads level1.lua on release)
level6Btn = widget.newButton{
--label="Pause",
--labelColor = { default={255}, over={128} },
default="Images/levelButton.png",
over="Images/levelButton.png",
width=75, height=75,
onRelease = onLevel\_6\_BtnRelease -- event listener function
}
level6Btn:setReferencePoint( display.TopLeftReferencePoint )
level6Btn.x = 190
level6Btn.y = 105
--level6Btn.x = display.contentWidth\*0.5 + 208
--level6Btn.y = display.contentHeight - 288
level6Btn.alpha = 1
level6Btn.isVisible = true
-- create a widget button (which will loads level1.lua on release)
level7Btn = widget.newButton{
--label="Pause",
--labelColor = { default={255}, over={128} },
default="Images/levelButton.png",
over="Images/levelButton.png",
width=75, height=75,
onRelease = onLevel\_7\_BtnRelease -- event listener function
}
level7Btn:setReferencePoint( display.TopLeftReferencePoint )
level7Btn.x = 35
level7Btn.y = 185
--level7Btn.x = display.contentWidth\*0.5 + 208
--level7Btn.y = display.contentHeight - 288
level7Btn.alpha = 1
level7Btn.isVisible = true
-- create a widget button (which will loads level1.lua on release)
level8Btn = widget.newButton{
--label="Pause",
--labelColor = { default={255}, over={128} },
default="Images/levelButton.png",
over="Images/levelButton.png",
width=75, height=75,
onRelease = onLevel\_8\_BtnRelease -- event listener function
}
level8Btn:setReferencePoint( display.TopLeftReferencePoint )
level8Btn.x = 110
level8Btn.y = 185
--level8Btn.x = display.contentWidth\*0.5 + 208
--level8Btn.y = display.contentHeight - 288
level8Btn.alpha = 1
level8Btn.isVisible = true
-- create a widget button (which will loads level1.lua on release)
level9Btn = widget.newButton{
--label="Pause",
--labelColor = { default={255}, over={128} },
default="Images/levelButton.png",
over="Images/levelButton.png",
width=75, height=75,
onRelease = onLevel\_9\_BtnRelease -- event listener function
}
level9Btn:setReferencePoint( display.TopLeftReferencePoint )
level9Btn.x = 190
level9Btn.y = 185
--level9Btn.x = display.contentWidth\*0.5 + 208
--level9Btn.y = display.contentHeight - 288
level9Btn.alpha = 1
level9Btn.isVisible = true
-- create a widget button (which will loads the Story Mode of the game .lua on release)
webBtn = widget.newButton{
--label="Play Now",
--labelColor = { default={255}, over={128} },
default="Images/webSiteButton1.png",
over="Images/webSiteButton1.png",
width=154, height=40,
onRelease = onWebBtnRelease -- event listener function
}
webBtn:setReferencePoint( display.CenterReferencePoint )
webBtn.x = display.contentWidth\*0.5 + 125
webBtn.width = 50
webBtn.height = 50
webBtn.y = display.contentHeight - 50
webBtn.alpha =1
webBtn.isVisible = true
-- create a widget button (which will loads the Story Mode of the game .lua on release)
netBtn = widget.newButton{
--label="Play Now",
--labelColor = { default={255}, over={128} },
default="Images/faceBookButton1.png",
over="Images/faceBookButton1.png",
width=154, height=40,
onRelease = onNetBtnRelease -- event listener function
}
netBtn:setReferencePoint( display.CenterReferencePoint )
netBtn.x = display.contentWidth\*0.5 + 185
netBtn.width = 50
netBtn.height = 50
netBtn.y = display.contentHeight - 50
netBtn.alpha = 1
netBtn.isVisible = true
------- widget BUTTONS MOVE ONSCREEN IF LEVEL CLEARED -----
function levelButtonMove()
if (level1\_cleared == true) then
level2Btn.y = 25
numTwo.isVisible = true
levelLock\_2.isVisible = false
elseif(level2\_cleared == true) then
level3Btn.y = 25
end
end
-- all display objects must be inserted into group
group:insert( background )
group:insert( titleLogo )
group:insert( level1Btn)
group:insert( level2Btn)
group:insert( level3Btn)
group:insert( level4Btn)
group:insert( level5Btn)
group:insert( level6Btn)
group:insert( level7Btn)
group:insert( level8Btn)
group:insert( level9Btn)
--group:insert( webBtn)
end
--onRelease = onWebBtnRelease -- event listener function
-- Called immediately after scene has moved onscreen:
function scene:enterScene( event )
local group = self.view
--physics.start()
levelButtonMove()
print(level1\_cleared)
-- INSERT code here (e.g. start timers, load audio, start listeners, etc.)
end
-- Called when scene is about to move offscreen:
function scene:exitScene( event )
local group = self.view
-- INSERT code here (e.g. stop timers, remove listenets, unload sounds, etc.)
end
-- If scene's view is removed, scene:destroyScene() will be called just prior to:
function scene:destroyScene( event )
local group = self.view
--if level1Btn then
-- level1Btn:removeSelf() -- widgets must be manually removed
--level1Btn = nil
--end
end
-----------------------------------------------------------------------------------------
-- END OF YOUR IMPLEMENTATION
-----------------------------------------------------------------------------------------
-- "createScene" event is dispatched if scene's view does not exist
scene:addEventListener( "createScene", scene )
-- "enterScene" event is dispatched whenever scene transition has finished
scene:addEventListener( "enterScene", scene )
-- "exitScene" event is dispatched whenever before next scene's transition begins
scene:addEventListener( "exitScene", scene )
-- "destroyScene" event is dispatched before view is unloaded, which can be
-- automatically unloaded in low memory situations, or explicitly via a call to
-- storyboard.purgeScene() or storyboard.removeScene().
scene:addEventListener( "destroyScene", scene )
-----------------------------------------------------------------------------------------
return scene
I also have a “loadingPage” that I want to use for preloading Story Mode levels (they`ll display text or animations while the game level loads, but even though I have loadScene on them, the physics are still failing when the level starts.
--------------------------------------------
--
-- Wild FIRE: Spell-Jammer
-- by Walter Ragland (Wylde Blade Media C.M.V.)
-- http://wwww.cre8tivemv.com
-- Version: 1.0
-----------------------------------------------------------------------------------------
--
-- loadingPage.lua
--
-----------------------------------------------------------------------------------------
local storyboard = require( "storyboard" )
local scene = storyboard.newScene()
-----------------------------------------------------------------------------------------
-- BEGINNING OF YOUR IMPLEMENTATION
--
-- NOTE: Code outside of listener functions (below) will only be executed once,
-- unless storyboard.removeScene() is called.
--
-------------------------------------------------------------------------------------------
-- LOAD SOUNDS ------
--local bgm = audio.loadSound("youwin.wav")
-- Play BGM -----
--audio.play(bgm)
--local level1\_01 = storyboard.loadScene( "level1\_01", true )
--- GO TO MENU FUNCTION -----
function gotoMenu()
-- LEAD ACTUAL MENU
storyboard.gotoScene( "menu", "fade", 2000)
local level1\_01 = storyboard.loadScene( "level1\_01", true )
end
-- Called when the scene's view does not exist:
function scene:createScene( event )
local group = self.view
-- display a background image
local logo = display.newImageRect( "Images/loadingScreen.png", display.contentWidth, display.contentHeight )
logo:setReferencePoint( display.TopLeftReferencePoint )
logo.x, logo.y = 0, 0
--logo.isVisible = true
-- all display objects must be inserted into group
group:insert( logo )
end
-- Called immediately after scene has moved onscreen:
function scene:enterScene( event )
local group = self.view
-- INSERT code here (e.g. start timers, load audio, start listeners, etc.)
--storyboard.gotoScene( "beginningCredits", "fade", 2000)
timer.performWithDelay(2000, gotoMenu,1) -- TIMER FUNCTION FOR DELAYS AND STUFF
--storyboard.gotoScene( "level1\_01", "fade", 2000)
end
-- Called when scene is about to move offscreen:
function scene:exitScene( event )
local group = self.view
end
-- If scene's view is removed, scene:destroyScene() will be called just prior to:
function scene:destroyScene( event )
local group = self.view
end
-----------------------------------------------------------------------------------------
-- END OF YOUR IMPLEMENTATION
-----------------------------------------------------------------------------------------
-- "createScene" event is dispatched if scene's view does not exist
scene:addEventListener( "createScene", scene )
-- "enterScene" event is dispatched whenever scene transition has finished
scene:addEventListener( "enterScene", scene )
-- "exitScene" event is dispatched whenever before next scene's transition begins
scene:addEventListener( "exitScene", scene )
-- "destroyScene" event is dispatched before view is unloaded, which can be
-- automatically unloaded in low memory situations, or explicitly via a call to
-- storyboard.purgeScene() or storyboard.removeScene().
scene:addEventListener( "destroyScene", scene )
-----------------------------------------------------------------------------------------
return scene
Any thoughts on what could be wrong with getting the physics to start on these levels immediately after the level loads? I have every scene set to purge after being moved off screen using “storyboard.purgeOnSceneChange = true” in the main.lua file.
Any help would be very much appreciated! Thanks. [import]uid: 22261 topic_id: 32661 reply_id: 332661[/import]