I think this is a good example of the source of my memory leak problem in my game. If anybody sees any trouble makers here, let me know.
Right now, I’m using this at the beginning of all my pages:
[code]
local function garbagePrinting()
collectgarbage(“collect”)
print(“loadmainmenu.lua”)
print("Memory: " … collectgarbage(“count”))
print(system.getInfo(“textureMemoryUsed”))
end
garbagePrinting()[/code]
And then when I switch pages:
local goToLevel = function()
audio.stop( 11 )
audio.dispose( 11 )
brainSound = nil
reacher1:dispose()
reacher1 = nil
walker:dispose()
walker = nil
reacher2:dispose()
reacher2 = nil
cleanGroup( localGroup )
localGroup = nil
director:changeScene( "mainmenu" )
end
Here’s that whole page. It’s causing the garbage count to go up 59 (K?) and I think is a good example of the same problem I’m having throughout the game:
[code]
module(…, package.seeall)
– Main function - MUST return a display.newGroup()
function new()
local sprite = require “sprite”
local function garbagePrinting()
collectgarbage(“collect”)
print(“loadmainmenu.lua”)
print("Memory: " … collectgarbage(“count”))
print(system.getInfo(“textureMemoryUsed”))
end
garbagePrinting()
local localGroup = display.newGroup()
local theTimer
local backgroundFill
local spriteReacher1
local spriteWalker
local spriteReacher2
local loadingImage
local brainSound = audio.loadSound( “brains07.mp3” , false)
audio.play( brainSound, { channel=11, onComplete=audio.stop( 11 ) } )
local showLoadingScreen = function()
backgroundFill = display.newImageRect( “scrollmore-bg.png”, 480, 320 )
backgroundFill.x = centerX; backgroundFill.y = centerY
localGroup:insert( backgroundFill )
local reacher1 = sprite.newSpriteSheetFromData( “reacher1”…suffix…".png", require(“reacher1”…suffix).getSpriteSheetData() )
local spriteSet = sprite.newSpriteSet( reacher1,1,59 )
sprite.add(spriteSet,“reacher1”,1,59,1000,0)
spriteReacher1 = sprite.newSprite( spriteSet )
spriteReacher1:prepare()
spriteReacher1:play()
spriteReacher1.x = 100
spriteReacher1.y = 296
spriteReacher1.xScale, spriteReacher1.yScale = displayScale, displayScale
localGroup:insert( spriteReacher1 )
local walker = sprite.newSpriteSheetFromData( “walker”…suffix…".png", require(“walker”…suffix).getSpriteSheetData() )
local spriteSet = sprite.newSpriteSet( walker,1,59 )
sprite.add(spriteSet,“walker”,1,59,1000,0)
spriteWalker = sprite.newSprite( spriteSet )
spriteWalker:play()
spriteWalker.x = 240
spriteWalker.y = 55
spriteWalker.xScale, spriteWalker.yScale = displayScale, displayScale
localGroup:insert( spriteWalker )
local reacher2 = sprite.newSpriteSheetFromData( “reacher2”…suffix…".png", require(“reacher2”…suffix).getSpriteSheetData() )
local spriteSet = sprite.newSpriteSet( reacher2,1,59 )
sprite.add(spriteSet,“reacher2”,1,59,1000,0)
spriteReacher2 = sprite.newSprite( spriteSet )
spriteReacher2:play()
spriteReacher2.x = 380
spriteReacher2.y = 296
spriteReacher2.xScale, spriteReacher2.yScale = displayScale, displayScale
localGroup:insert( spriteReacher2 )
loadingImage = display.newImageRect( “ratatat.png”, 480, 320 )
loadingImage.x = centerX; loadingImage.y = centerY
localGroup:insert( loadingImage )
local goToLevel = function()
audio.stop( 11 )
audio.dispose( 11 )
brainSound = nil
reacher1:dispose()
reacher1 = nil
walker:dispose()
walker = nil
reacher2:dispose()
reacher2 = nil
cleanGroup( localGroup )
localGroup = nil
director:changeScene( “mainmenu” )
end
theTimer = timer.performWithDelay( 3000, goToLevel, 1 )
end
r = display.newRect( screenX, screenY, screenWidth, screenHeight)
r:setFillColor( 0, 0, 0 )
local function repeatFade (event)
r.alpha = 1
transition.to( r, { alpha=0, time=700 } )
end
– Fade out rectangle every second 20x using transition.to()
timer.performWithDelay( 700, repeatFade, 1 )
showLoadingScreen()
unloadMe = function()
if theTimer then
timer.cancel( theTimer )
theTimer = nil
end
end
– MUST return a display.newGroup()
return localGroup
end[/code] [import]uid: 14032 topic_id: 9743 reply_id: 35641[/import]