Cocos2d Sprite表没有动画

时间:2012-08-29 12:05:41

标签: cocos2d-iphone sprite

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];
}

为什么我的播放器没有动画效果?

1 个答案:

答案 0 :(得分:1)

Spritesheet只是一种存储纹理的便捷方式。

您的CCAnimation对象没有框架。您收集了一系列帧,但您从未使用它。改变你的

CCAnimation *anim = [CCAnimation animation];

行到

CCAnimation *anim = [CCAnimation animationWithFrames:frames delay:0.2f];

如果要为精灵设置动画,则必须对此精灵运行动画操作。使用[sprite runAction:repeat]代替[self runAction:repeat];