【发布时间】:2012-06-02 10:25:42
【问题描述】:
当我将 CCSpriteFrameCache 或 CCSpriteBatchNode 添加到我的 cocos2d 应用程序时,我不明白我在做什么。有人能解释一下以下几点吗(如果你能解释一些会很有帮助;请根据你回答的问题在你的答案前面写上相应的字母):
[所有问题都意味着实现最佳性能和最低内存使用]
a) 为每一层创建精灵表是否至关重要? (例如:Menu - 自己的 spritesheet,GameLayer - 自己的 spritesheet...)
b) 有人可以解释为什么我必须将精灵添加到批处理节点,以及批处理节点通常是什么?
b1)那么,为什么我不能这样做:
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"menusprites.plist"];
CCSpriteBatchNode *spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"menusprites.png"];
[self addChild:spriteSheet];
然后通过调用将精灵添加到我的图层中
CCSprite *mySprite = [CCSprite spriteWithSpriteFrameName:@""];
[self addChild:mySprite];
不将它们添加到批处理节点?因为据我了解,它是这样工作的:
我将包含所有精灵的精灵表添加到屏幕上。然后我的应用程序进入 plist 并查找我想要显示的精灵的坐标,然后将其放置在屏幕上。那我为什么要打电话给
[spriteSheet addChild:mySprite];
?
c) 当我不再需要 spritesheet 以供记忆时,我该如何摆脱它?
【问题讨论】:
-
这是一个很好的由代码和网络组成的 3 部分解释 - game sprites movie
标签: objective-c ipad cocos2d-iphone ccsprite