我使用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
答案 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