My solution is usually to have an intermediate ‘loading’ scene - it doesn’t necessarily need to display anything, just acts as a bridge.
In my ‘game’ scene I would do this:
[lua]
_G.nextScene = “game”
storyboard.gotoScene(“loading”, “fromTop”, 100)
[/lua]
And this is my loading.lua file:
[lua]
module(…, package.seeall)
local storyboard = require(“storyboard”)
local scene = storyboard.newScene()
– STORYBOARD FUNCTIONS
– Called when the scene’s view does not exist:
function scene:createScene(event)
local localGroup = self.view
local r = display.newRect(0, 0, 700, 564)
localGroup:insert®
r:setFillColor(0,0,0)
end
– Called BEFORE scene has moved onscreen:
function scene:willEnterScene(event)
local group = self.view
end
– Called immediately after scene has moved onscreen:
function scene:enterScene(event)
local group = self.view
local previous = storyboard.getPrevious()
if previous ~= “main” and previous then
storyboard.removeScene(previous)
end
local ready = function()
storyboard.gotoScene(_G.nextScene, “fromBottom”, 400); end
end
timer.performWithDelay(50, ready)
end
– Called when scene is about to move offscreen:
function scene:exitScene(event)
local group = self.view
end
– Called AFTER scene has finished moving offscreen:
function scene:didExitScene(event)
local group = self.view
end
– Called prior to the removal of scene’s “view” (display group)
function scene:destroyScene(event)
local group = self.view
end
– Called if/when overlay scene is displayed via storyboard.showOverlay()
function scene:overlayBegan(event)
local group = self.view
local overlay_scene = event.sceneName – overlay scene name
end
– Called if/when overlay scene is hidden/removed via storyboard.hideOverlay()
function scene:overlayEnded(event)
local group = self.view
local overlay_scene = event.sceneName – overlay scene name
end
– END OF YOUR IMPLEMENTATION
scene:addEventListener(“createScene”, scene)
scene:addEventListener(“willEnterScene”, scene)
scene:addEventListener(“enterScene”, scene)
scene:addEventListener(“exitScene”, scene)
scene:addEventListener(“didExitScene”, scene)
scene:addEventListener(“destroyScene”, scene)
scene:addEventListener(“overlayBegan”, scene)
scene:addEventListener(“overlayEnded”, scene)
return scene
[/lua]