我有一个艺术家发送给我的精灵表 PNG。在 sprite sheet 内,有 4 个 sprite,每个 32x32,它们制作动画。我希望能够在屏幕上显示一个 CCSprite,它会通过动画。我已经尝试了各种各样的东西,但说实话,我真的不明白 Sprite Sheets 的概念。我在网上看到了各种需要财产清单之类的东西。我从我的艺术家那里得到的只是一个简单的 PNG。请帮忙?
问问题
444 次
2 回答
1
我也遇到了这个问题,这是我想出的解决方案,不需要 plist 也不需要 Zwoptex,但这假设每个帧都是 32x32 并且以 32 个间隔完美对齐。
@interface GameLevelLayer()
{
CCSpriteBatchNode *trexSheet;
int aniCount;
NSTimer *autoWalker;
}
@end
在你的 init 或任何地方添加 spritesheet
trexSheet = [CCSpriteBatchNode batchNodeWithFile:@"dinosss.png"];
[self addChild:trexSheet];
aniCount=1;
使用 NSTimer 停止和启动动画
-(void)stopWalker{
aniCount =1;
//set to start frame
[self.player setDisplayFrame:
[CCSpriteFrame frameWithTexture:trexSheet.texture rect:
CGRectMake(0,0,32,32)]];
if (autoWalker){
[autoWalker invalidate];
autoWalker = nil;
}
}
并开始...
-(void)startWalker{
if (!autoWalker){
[self walkimate];
//Change the timeInterval to adjust animation speed
autoWalker = [NSTimer scheduledTimerWithTimeInterval:0.15
target:self
selector:@selector(walkimate)
userInfo:nil
repeats:YES];
}
}
循环函数
-(void)walkimate{
///loop through animation
if (aniCount>4) {
///set to 0 because we add one at the end before the next call
aniCount =0;
}
//this finds the 32x32 pa
[self.player setDisplayFrame:
[CCSpriteFrame frameWithTexture:trexSheet.texture rect:
CGRectMake(32*i,0,32,32)];
aniCount++;
}
于 2012-09-30T11:21:23.997 回答
0
您可以使用 Zwoptex 工具将 spriteSheet 与 cocos2D plist 一起导出。它的免费工具且易于使用。
于 2012-09-30T03:07:15.537 回答