为了避免电晕sdk中的内存泄漏

时间:2012-04-16 10:16:54

标签: memory-management corona

我使用spritext()方法制作动画,我尝试使用dispose()方法释放spritesheets的内存,但它显示错误。

如何释放spritesheets的内存?

   local spritext = require("spritext")
   local arr      = {"images/rainbow2.png","images/rainbow1.png"}   

   local myAnim   = spritext.newAnim(arr[1], 600,350, 1, 15);
         myAnim.x = display.contentWidth/2;
         myAnim.y = display.contentHeight/2 -70;
         r:insert(myAnim);

   myAnim:play{ startFrame=1, endFrame=15, loop=1 }

   local function cleanUp()
       myAnim:dispose();
   end

1 个答案:

答案 0 :(得分:2)

您是否在使用SpriteSheet的API?我相信对象:dispose已被弃用。

使用它的新方法是通过SpriteObject,它继承自DisplayObject API。 http://docs.coronalabs.com/api/type/SpriteObject/index.html - SpriteObject

您应该能够从DisplayObject API调用object:removeSelf。 http://docs.coronalabs.com/api/type/DisplayObject/removeSelf.html

以下是我如何处理我的spritesheets的片段。

-- Import sprite sheet
local someSheet = graphics.newImageSheet( "someimages.png", someInfo:getSheet() ) -- ImageSheet.png is the image Texture packer published

-- Set sprite sequence data.
local someSequenceData = {
     { name="dance", frames={8,1,2,3,4,5,4,3,2,1,8}, time=2000, loopCount=1},
     { name="sad", frames={8,9,8}, time=3000, loopCount=1},
     { name="happy", frames={8,5,8}, time=3000, loopCount=1},
     { name="smile", frames={8,10,8}, time=3000, loopCount=1},
     { name="hit", frames={7,8}, time=2000, loopCount=1}
}

-- load sprite object
spriteObject = display.newSprite( someSheet, someSequenceData )
spriteObject.x = display.contentWidth/2
spriteObject.y = display.contentHeight/2

-- play one of the animations
spriteObject:play("dance")

-- to remove the entire sprite object
spriteObject:removeSelf()

快速说明: 对于我的spritesheets,我使用一个名为“TexturePacker”的应用程序,我只是放入一些图像,设置一些设置,然后构建一个打包的精灵表,以及一个数据表随附。

编辑: 我没有意识到这个问题相当古老..哦,好吧。无论如何,我希望这可以帮助别人。 :P