0

我使用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
4

1 回答 1

2

你在使用 SpriteSheet 的 API 吗?我相信 object: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

这是我如何处理精灵表的片段。

-- 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()

快速说明:对于我的精灵表,我使用了一个名为“TexturePacker”的应用程序,我只是将一些图像放入其中,设置一些设置,然后它会构建一个打包的精灵表,以及一个与之配套的数据表。

编辑:我没有意识到这个问题已经很老了。哦,好吧。我希望这对某人有所帮助。:P

于 2013-03-05T21:34:37.743 回答