New to storyboard, I need help.

I have 3 .lua files, every file has a storyboard with image sheet animation. when the first .lua(intro.lua) file has finished its animation, the scene will go to the second .lua file(introb.lua), and after the animation of the second file the scene will be directed to the third .lua file(introc.lua). My problem is when the scene is in the third .lua file(introc.lua) the screen freezes. I am wondering if the problem is because of the image size. I dont know how to delete the previous scene so please help me solving this problem.

these are the codes of the 1st, 2nd and 3rd .lua file (intro.lua, introb.lua, introc.lua):

INTRO.LUA




local storyboard = require( “storyboard” )
local scene = storyboard.newScene()
local Intrologo
local IntrologosequenceData
local Intrologoanimation

– Clear previous scene
storyboard.removeAll()
storyboard.purgeOnSceneChange = true
 
– local forward references should go here –
 

– BEGINNING OF YOUR IMPLEMENTATION

 
– Called when the scene’s view does not exist:
function scene:createScene( event )
      local group = self.view    

    Intrologo = { width=640, height=480, numFrames=34, sheetContentWidth=1280, sheetContentHeight=8160 }
 
    local IntrologoSheet = graphics.newImageSheet( “images/intrologosmall.png”, Intrologo )

    IntrologosequenceData = {
     
    { name = “fastRun”,
    frames = { 1,2,3,25,25,25,25,25}, --specific order of frame indexes from the image sheet
    time = 3000, – higher = slower , lower = faster
    loopCount = 1
    } --if defining more sequences, place a comma here and proceed to the next sequence sub-table
     
    }
    Intrologoanimation = display.newSprite( IntrologoSheet, IntrologosequenceData )

    Intrologoanimation.x = 240
    Intrologoanimation.y = 160
    Intrologoanimation:scale( display.contentWidth / 640, display.contentHeight / 480 )
    Intrologoanimation:play()

    group:insert ( Intrologoanimation ) --group

    local function mySpriteListener( event )

        if ( event.phase == “ended” ) then
            display.remove( Intrologoanimation )
            storyboard.gotoScene(“introb”)
        end
    end

    Intrologoanimation:addEventListener( “sprite”, mySpriteListener )

   
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
 
end
 
– Called when scene is about to move offscreen:
function scene:exitScene( event )
     local group = self.view
  Intrologoanimation:removeSelf()

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 view)
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_name = event.sceneName  – name of the overlay scene
 
end
 
– Called if/when overlay scene is hidden/removed via storyboard.hideOverlay()
function scene:overlayEnded( event )
      local group = self.view
      local overlay_name = event.sceneName  – name of the overlay scene
 
end
 

– END OF YOUR IMPLEMENTATION

 
– “createScene” event is dispatched if scene’s view does not exist
scene:addEventListener( “createScene”, scene )
 
– “willEnterScene” event is dispatched before scene transition begins
scene:addEventListener( “willEnterScene”, scene )
 
– “enterScene” event is dispatched whenever scene transition has finished
scene:addEventListener( “enterScene”, scene )
 
– “exitScene” event is dispatched before next scene’s transition begins
scene:addEventListener( “exitScene”, scene )
 
– “didExitScene” event is dispatched after scene has finished transitioning out
scene:addEventListener( “didExitScene”, 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 )
 
– “overlayBegan” event is dispatched when an overlay scene is shown
scene:addEventListener( “overlayBegan”, scene )
 
– “overlayEnded” event is dispatched when an overlay scene is hidden/removed
scene:addEventListener( “overlayEnded”, scene )
 

 
return scene




INTROB.LUA




local storyboard = require( “storyboard” )
local scene = storyboard.newScene()
local Intrologo2
local IntrologosequenceData2
local Intrologoanimation2

– Clear previous scene
storyboard.removeAll()
storyboard.purgeOnSceneChange = true
 
– local forward references should go here –
 

– BEGINNING OF YOUR IMPLEMENTATION

 
– Called when the scene’s view does not exist:
function scene:createScene( event )
      local group2 = self.view    

    Intrologo2 = { width=640, height=480, numFrames=34, sheetContentWidth=1280, sheetContentHeight=8160 }
 
    local IntrologoSheet2 = graphics.newImageSheet( “images/intrologosmall.png”, Intrologo2 )

    IntrologosequenceData2 = {
     
    { name = “fastRun2”,
    frames = { 1,2,3,25,25,25,25,25}, --specific order of frame indexes from the image sheet
    time = 3000, – higher = slower , lower = faster
    loopCount = 1
    } --if defining more sequences, place a comma here and proceed to the next sequence sub-table
     
    }
    Intrologoanimation2 = display.newSprite( IntrologoSheet2, IntrologosequenceData2 )

    Intrologoanimation2.x = 240
    Intrologoanimation2.y = 160
    Intrologoanimation2:scale( display.contentWidth / 640, display.contentHeight / 480 )
    Intrologoanimation2:play()

    group2:insert ( Intrologoanimation2 ) --group

    function mySpriteListener2( event )

        if ( event.phase == “ended” ) then

            storyboard.gotoScene(“introc”)
        end
    end

    Intrologoanimation2:addEventListener( “sprite”, mySpriteListener2 )

   
end
 
– Called BEFORE scene has moved onscreen:
function scene:willEnterScene( event )
      local group2 = self.view
 
end
 
– Called immediately after scene has moved onscreen:
function scene:enterScene( event )
     local group2 = self.view
 
end
 
– Called when scene is about to move offscreen:
function scene:exitScene( event )
     local group2 = self.view
  Intrologoanimation2:removeSelf()
end
 
– Called AFTER scene has finished moving offscreen:
function scene:didExitScene( event )
    local group2 = self.view
 
end
 
– Called prior to the removal of scene’s “view” (display view)
function scene:destroyScene( event )
      local group2 = self.view
 
end
 
– Called if/when overlay scene is displayed via storyboard.showOverlay()
function scene:overlayBegan( event )
      local group2 = self.view
      local overlay_name = event.sceneName  – name of the overlay scene
 
end
 
– Called if/when overlay scene is hidden/removed via storyboard.hideOverlay()
function scene:overlayEnded( event )
      local group2 = self.view
      local overlay_name = event.sceneName  – name of the overlay scene
 
end
 

– END OF YOUR IMPLEMENTATION

 
– “createScene” event is dispatched if scene’s view does not exist
scene:addEventListener( “createScene”, scene )
 
– “willEnterScene” event is dispatched before scene transition begins
scene:addEventListener( “willEnterScene”, scene )
 
– “enterScene” event is dispatched whenever scene transition has finished
scene:addEventListener( “enterScene”, scene )
 
– “exitScene” event is dispatched before next scene’s transition begins
scene:addEventListener( “exitScene”, scene )
 
– “didExitScene” event is dispatched after scene has finished transitioning out
scene:addEventListener( “didExitScene”, 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 )
 
– “overlayBegan” event is dispatched when an overlay scene is shown
scene:addEventListener( “overlayBegan”, scene )
 
– “overlayEnded” event is dispatched when an overlay scene is hidden/removed
scene:addEventListener( “overlayEnded”, scene )
 

 
return scene




INTROC.LUA




local storyboard = require( “storyboard” )
local scene = storyboard.newScene()
local Intrologo3
local IntrologosequenceData3
local Intrologoanimation3

– Clear previous scene
storyboard.removeAll()
storyboard.purgeOnSceneChange = true
 
– local forward references should go here –
 

– BEGINNING OF YOUR IMPLEMENTATION

 
– Called when the scene’s view does not exist:
function scene:createScene( event )
      local group3 = self.view    

    Intrologo3 = { width=640, height=480, numFrames=34, sheetContentWidth=1280, sheetContentHeight=8160 }
 
    local IntrologoSheet3 = graphics.newImageSheet( “images/intrologosmall.png”, Intrologo3 )

    IntrologosequenceData3 = {
     
    { name = “fastRun3”,
    frames = { 1,2,3,25,25,25,25,25}, --specific order of frame indexes from the image sheet
    time = 3000, – higher = slower , lower = faster
    loopCount = 1
    } --if defining more sequences, place a comma here and proceed to the next sequence sub-table
     
    }
    Intrologoanimation3 = display.newSprite( IntrologoSheet3, IntrologosequenceData3 )

    Intrologoanimation3.x = 240
    Intrologoanimation3.y = 160
    Intrologoanimation3:scale( display.contentWidth / 640, display.contentHeight / 480 )
    Intrologoanimation3:play()

    group3:insert ( Intrologoanimation3 ) --group

    

    function mySpriteListener3( event )

        if ( event.phase == “ended” ) then

            storyboard.gotoScene(“menu”)
        end
    end

    Intrologoanimation3:addEventListener( “sprite”, mySpriteListener3 )

   
end
 
– Called BEFORE scene has moved onscreen:
function scene:willEnterScene( event )
      local group3 = self.view
 
end
 
– Called immediately after scene has moved onscreen:
function scene:enterScene( event )
     local group3 = self.view
 
end
 
– Called when scene is about to move offscreen:
function scene:exitScene( event )
     local group3 = self.view
 Intrologoanimation3:removeSelf()
end
 
– Called AFTER scene has finished moving offscreen:
function scene:didExitScene( event )
    local group3 = self.view
 
end
 
– Called prior to the removal of scene’s “view” (display view)
function scene:destroyScene( event )
      local group3 = self.view
 
end
 
– Called if/when overlay scene is displayed via storyboard.showOverlay()
function scene:overlayBegan( event )
      local group3 = self.view
      local overlay_name = event.sceneName  – name of the overlay scene
 
end
 
– Called if/when overlay scene is hidden/removed via storyboard.hideOverlay()
function scene:overlayEnded( event )
      local group3 = self.view
      local overlay_name = event.sceneName  – name of the overlay scene
 
end
 

– END OF YOUR IMPLEMENTATION

 
– “createScene” event is dispatched if scene’s view does not exist
scene:addEventListener( “createScene”, scene )
 
– “willEnterScene” event is dispatched before scene transition begins
scene:addEventListener( “willEnterScene”, scene )
 
– “enterScene” event is dispatched whenever scene transition has finished
scene:addEventListener( “enterScene”, scene )
 
– “exitScene” event is dispatched before next scene’s transition begins
scene:addEventListener( “exitScene”, scene )
 
– “didExitScene” event is dispatched after scene has finished transitioning out
scene:addEventListener( “didExitScene”, 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 )
 
– “overlayBegan” event is dispatched when an overlay scene is shown
scene:addEventListener( “overlayBegan”, scene )
 
– “overlayEnded” event is dispatched when an overlay scene is hidden/removed
scene:addEventListener( “overlayEnded”, scene )
 

 
return scene




If you are not too vested in Storyboard, I would recommend using the composer.* library instead.  Composer is storyboard 2.0 and we are deprecating storyboard.  You will future proof your app better  by using composer.

I would consider removing the storyboard.removeAll() call’s from the main chunk of each scene and move them to your enterScene() functions so that you can remove scene’s that are actually off screen.

Rob

thank you for your answer, i tried what you said and there are no more freezing. i will try composer.and i hope it is easy. thank you again! :angry:

If you are not too vested in Storyboard, I would recommend using the composer.* library instead.  Composer is storyboard 2.0 and we are deprecating storyboard.  You will future proof your app better  by using composer.

I would consider removing the storyboard.removeAll() call’s from the main chunk of each scene and move them to your enterScene() functions so that you can remove scene’s that are actually off screen.

Rob

thank you for your answer, i tried what you said and there are no more freezing. i will try composer.and i hope it is easy. thank you again! :angry: