Thank for answer, but sadly I already try to remove all the scene, but nothing seem to work…
When I monitor the Memory Usage, I see that i’ve got a memory leak in almost all of my page, but when I look at the code, everything seem to be working.
I also use the xCode console, while testing on device and it write that it crashed because of a memory warning, but my game wasn’t lagging at all!
Here, maybe that gonna more usefull if I show you the code of the 2 first page of my game:
[lua]-----------------------------------------------------------------------------------------
– menu.lua
local storyboard = require( “storyboard” )
local scene = storyboard.newScene()
storyboard.ice = require(“ice”)
– include Corona’s “widget” library
local widget = require “widget”
local function onPlayBtnRelease()
storyboard.purgeScene(“menu”)
storyboard.gotoScene( “carte”, “fade”, 300 )
return true – indicates successful touch
end
local function onPlayBtnRelease02()
storyboard.purgeScene(“menu”)
storyboard.gotoScene( “achievement”, “slideDown”, 300 )
return true
end
local function onPlayBtnRelease03()
storyboard.purgeScene(“menu”)
storyboard.gotoScene( “minigame”, “slideUp”, 300 )
return true
end
local function onPlayBtnRelease04()
storyboard.purgeScene(“menu”)
storyboard.gotoScene( “shop”, “slideDown”, 300 )
return true
end
local function onPlayBtnRelease05()
storyboard.purgeScene(“menu”)
storyboard.gotoScene( “option”, “slideUp”, 300 )
return true
end
– Called when the scene’s view does not exist:
function scene:createScene( event )
local gameData = ice:loadBox( “gameData” )
local group = self.view
audio.setVolume( gameData:retrieve( “volume” ))
local background = display.newImage( “interface/MenuPrincipal_01.png”)
background:setReferencePoint( display.TopLeftReferencePoint )
background.y = display.screenOriginY
local wallet = display.newGroup()
local walletWindow = display.newImage( “interface/porteFeuille.png”)
local walletUsa = display.newText(gameData:retrieve( “moneyUsa” ), 25, 25, native.systemFont, 35)
local walletCan = display.newText(gameData:retrieve( “moneyCan” ), 25, 60, native.systemFont, 35)
local walletEur = display.newText(gameData:retrieve( “moneyEur” ), 25, 95, native.systemFont, 35)
local walletYen = display.newText(gameData:retrieve( “moneyYen” ), 25, 130, native.systemFont, 35)
wallet:insert(walletWindow)
wallet:insert(walletUsa)
wallet:insert(walletCan)
wallet:insert(walletEur)
wallet:insert(walletYen)
wallet.x = display.screenOriginX
wallet.y = display.contentHeight - walletWindow.height
– create a widget button (which will loads level1.lua on release)
playBtn = widget.newButton{
default=“interface/Carte.png”,
over=“interface/Carte.png”,
onRelease = onPlayBtnRelease – event listener function
}
playBtn:setReferencePoint( display.CenterReferencePoint )
playBtn.x = display.contentWidth*0.5
playBtn.y = display.screenOriginY + 340
playBtn02 = widget.newButton{
default=“interface/trophy.png”,
over=“interface/trophy.png”,
onRelease = onPlayBtnRelease02 – event listener function
}
playBtn02:setReferencePoint( display.CenterReferencePoint )
playBtn02.x = 180
playBtn02.y = display.screenOriginY + 320
playBtn03 = widget.newButton{
default=“interface/gameboy.png”,
over=“interface/gameboy.png”,
onRelease = onPlayBtnRelease03 – event listener function
}
playBtn03:setReferencePoint( display.CenterReferencePoint )
playBtn03.x = 300
playBtn03.y = display.screenOriginY + 550
– you must insert .view property for widgets
playBtn04 = widget.newButton{
default=“interface/computer.png”,
over=“interface/computer.png”,
onRelease = onPlayBtnRelease04 – event listener function
}
playBtn04:setReferencePoint( display.CenterReferencePoint )
playBtn04.x = 800
playBtn04.y = display.screenOriginY + 320
playBtn05 = widget.newButton{
default=“interface/option.png”,
over=“interface/option.png”,
onRelease = onPlayBtnRelease05 – event listener function
}
playBtn05:setReferencePoint( display.CenterReferencePoint )
playBtn05.x = 800
playBtn05.y = display.screenOriginY + 600
group:insert( playBtn02 ) – you must insert .view property for widgets
group:insert( background )
group:insert( playBtn )
group:insert( playBtn03 )
group:insert( playBtn04 ) – you must insert .view property for widgets
group:insert( playBtn05 ) – you must insert .view property for widgets
group:insert(wallet)
end
– Called immediately after scene has moved onscreen:
function scene:enterScene( event )
local group = self.view
–storyboard.printMemUsage()
– 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 playBtn then
display.remove( playBtn ) – widgets must be manually removed
playBtn = nil
end
if playBtn02 then
display.remove( playBtn02 ) – widgets must be manually removed
playBtn02 = nil
end
if playBtn03 then
display.remove( playBtn03 ) – widgets must be manually removed
playBtn03 = nil
end
if playBtn04 then
display.remove( playBtn04 ) – widgets must be manually removed
playBtn04 = nil
end
if playBtn05 then
display.remove( playBtn05 ) – widgets must be manually removed
playBtn05 = 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[/lua]
and from this page, I try to go to this page:
[lua]-----------------------------------------------------------------------------------------
– carte.lua
local storyboard = require( “storyboard” )
storyboard.ice = require(“ice”)
local scene = storyboard.newScene()
local widget = require “widget”
local function onPlayBtnRelease()
storyboard.purgeScene( “carte” )
storyboard.gotoScene( “menu”, “slideUp”, 300 )
return true
end
function scene:createScene( event )
local gameData = ice:loadBox( “gameData” ) – this (loading the ice box locally) is what was missing!!
local scoreMontrealTest = gameData:retrieve(“scoreMontreal”)
-------- Récupération des scores --------
local myNumber = 0
-------- Interface --------
local montreal = display.newImage( “interface/place.png”)
montreal.x = 320
montreal.y = 225
local paris = display.newImage( “interface/place.png”)
paris.x = 460
paris.y = 240
local panMontreal = display.newGroup()
local infoMontreal = display.newImage( “interface/panneauMontreal.png”)
local btStartMontreal = display.newImage( “interface/bt_next.png”)
local montrealScore = display.newText(gameData:retrieve( “scoreMontreal” ) or 0, 65, 60, native.systemFont, 25)
panMontreal:insert(infoMontreal)
panMontreal:insert(montrealScore)
panMontreal:insert(btStartMontreal)
btStartMontreal.y = 120
btStartMontreal.x = 75
panMontreal.x = display.viewableContentWidth + -1* display.screenOriginX
panMontreal.y = 140
local panParis = display.newGroup()
local infoParis = display.newImage( “interface/panneauParis.png”)
local btStartParis = display.newImage( “interface/bt_next.png”)
panParis:insert(infoParis)
panParis:insert(btStartParis)
btStartParis.y = 120
btStartParis.x = 75
panParis.x = display.viewableContentWidth + -1* display.screenOriginX
panParis.y = 220
local wallet = display.newGroup()
local walletWindow = display.newImage( “interface/porteFeuille.png”)
local walletUsa = display.newText(gameData:retrieve( “moneyUsa” ), 25, 25, native.systemFont, 35)
local walletCan = display.newText(gameData:retrieve( “moneyCan” ), 25, 60, native.systemFont, 35)
local walletEur = display.newText(gameData:retrieve( “moneyEur” ), 25, 95, native.systemFont, 35)
local walletYen = display.newText(gameData:retrieve( “moneyYen” ), 25, 130, native.systemFont, 35)
wallet:insert(walletWindow)
wallet:insert(walletUsa)
wallet:insert(walletCan)
wallet:insert(walletEur)
wallet:insert(walletYen)
wallet.x = display.screenOriginX
wallet.y = display.contentHeight - walletWindow.height
local group = self.view
– Display a background image
local background = display.newImage( “interface/Carte_01.png”)
background:setReferencePoint( display.TopLeftReferencePoint )
background.y = display.screenOriginY
– Widget Button
playBtn = widget.newButton{
default=“interface/bt_next.png”,
over=“interface/bt_nextOver.png”,
onRelease = onPlayBtnRelease – event listener function
}
playBtn:setReferencePoint( display.CenterReferencePoint )
playBtn.x = display.contentWidth*0.5
playBtn.y = display.contentHeight - 175
– Display objects
group:insert(background)
group:insert(montreal)
group:insert(paris)
group:insert( playBtn )
group:insert( panMontreal )
group:insert( panParis )
group:insert(wallet)
local onMontreal = function( event )
if(panMontreal.x == display.viewableContentWidth + -1* display.screenOriginX) then
transition.to( panMontreal, { time=200, x= panMontreal.x - 142 } )
end
if(panParis.x < display.viewableContentWidth + -1* display.screenOriginX) then
transition.to( panParis, { time=200, x= panParis.x + 142 } )
end
end
local onParis = function( event )
montrealScore.text = gameData:retrieve( “scoreMontreal” )
if(panParis.x == display.viewableContentWidth + -1* display.screenOriginX) then
transition.to( panParis, { time=200, x= panParis.x - 142 } )
end
if(panMontreal.x < display.viewableContentWidth + -1* display.screenOriginX) then
transition.to( panMontreal, { time=200, x= panMontreal.x + 142 } )
end
end
local startMontreal = function( event )
local options =
{
effect = “fade”,
time = 300,
params = { city = “montreal” }
}
storyboard.purgeScene(“carte”)
storyboard.gotoScene( “loading”, options )
end
playBtn02:addEventListener( “touch”, reset )
montreal:addEventListener( “touch”, onMontreal )
paris:addEventListener( “tap”, onParis )
btStartMontreal:addEventListener( “touch”, startMontreal )
end
– Called immediately after scene has moved onscreen:
function scene:enterScene( event )
local group = self.view
–storyboard.printMemUsage()
– 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 playBtn then
display.remove( playBtn ) – 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[/lua]
When I print the memory usage, on the page «Menu» I’m at 277.95 of MemUsage and 5.83 of texture memory. When I go to «Carte» it rise to 290.10 and 9.32. And when I go back to menu, it still rise to 303.14 and 10.61, and the number continue to rises as I navigate from page to page…
Any idea anyone?
[import]uid: 181680 topic_id: 32793 reply_id: 130448[/import]