Problem with physics not starting after "storyboard.loadScene( )" called

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]

If you provide just the essentials that display the issue, like just the necessary code when you load a level from your level select scene, I or someone else could probably tell you what’s up. Otherwise you will have to hope someone has the patience to sift through your 1500 lines of code that you posted :x [import]uid: 147305 topic_id: 32661 reply_id: 129900[/import]

If you provide just the essentials that display the issue, like just the necessary code when you load a level from your level select scene, I or someone else could probably tell you what’s up. Otherwise you will have to hope someone has the patience to sift through your 1500 lines of code that you posted :x [import]uid: 147305 topic_id: 32661 reply_id: 129900[/import]