0

我有一个艺术家发送给我的精灵表 PNG。在 sprite sheet 内,有 4 个 sprite,每个 32x32,它们制作动画。我希望能够在屏幕上显示一个 CCSprite,它会通过动画。我已经尝试了各种各样的东西,但说实话,我真的不明白 Sprite Sheets 的概念。我在网上看到了各种需要财产清单之类的东西。我从我的艺术家那里得到的只是一个简单的 PNG。请帮忙?

4

2 回答 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 回答