SpriteSheets是我无法理解的一件事。我正在寻找一种非常清晰易懂的方式来了解它们。我已阅读并研究过它们但仍有问题。
我不知道为什么我的代码无效。
-(void) addPlayer {
CGSize winSize = [[CCDirector sharedDirector] winSize];
CCSprite *sprite = [CCSprite spriteWithSpriteFrameName:@"walk1.png"];
sprite.position = ccp(winSize.width/2, winSize.height/2);
CCSpriteBatchNode *batchNode = [CCSpriteBatchNode batchNodeWithFile:@"player-walk.png"];
[batchNode addChild:sprite];
[self addChild:batchNode z:350];
NSMutableArray *frames = [NSMutableArray array];
for(int i = 1; i <= 4; ++i) {
[frames addObject:
[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"walk%d.png", i]]];
}
CCAnimation *anim = [CCAnimation animation];
CCAnimate *animate = [CCAnimate actionWithAnimation:anim];
CCRepeatForever *repeat = [CCRepeatForever actionWithAction:animate];
[self runAction:repeat];
}
为什么我的播放器没有动画效果?
答案 0 :(得分:1)
Spritesheet只是一种存储纹理的便捷方式。
您的CCAnimation对象没有框架。您收集了一系列帧,但您从未使用它。改变你的
CCAnimation *anim = [CCAnimation animation];
行到
CCAnimation *anim = [CCAnimation animationWithFrames:frames delay:0.2f];
如果要为精灵设置动画,则必须对此精灵运行动画操作。使用[sprite runAction:repeat]
代替[self runAction:repeat];
。