cocos2d动画精灵

时间:2012-03-28 13:26:33

标签: iphone objective-c image cocos2d-iphone sprite

嗨我正在为iphone制作一款游戏,当精灵移动时,我想让它在3张图像之间改变图像,这样看起来它正在运行。 我现在正在使用cocos2d而且我对cocos2d很新。我知道如何使用cocoa执行此操作,但这不适用于cocos2d。

所以我的问题是我如何更改3,图像之间的精灵图像,我想在我将手指放在屏幕上的位置时将其循环?

提前致谢。

2 个答案:

答案 0 :(得分:1)

对于cocos2d的新手,这是一个非常复杂的问题。

我会首先研究无限动画。让它工作,然后处理暂停,恢复和翻转动画。

您可以使用与添加精灵相同的方法设置动画。

NSMutableArray *animFrames = [NSMutableArray array];
    for(int i = 1; i <= 3; i++) {
        CCSpriteFrame *frame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"Sprite-%d.png",i]];
        [animFrames addObject:frame];
    }
    CCAnimation *animation = [CCAnimation animationWithName:@"run" delay:0.1f frames:animFrames];
    [mySprite runAction:[CCRepeatForever actionWithAction: [CCAnimate actionWithAnimation:animation restoreOriginalFrame:NO]]];

如果您不熟悉精灵表,有很多免费资源可用于创建精灵表和plist(TexturePacker有一个很好的界面)

如果你无法解决这个问题,Ray Wenderlich有很好的教程。如果你到目前为止这里有一些暂停,恢复和翻动动画的指示

暂停或恢复

[mySprite pauseSchedulerAndActions];
[mySprite resumeSchedulerAndActions];

只要触摸方向切换水平方向,就会翻转动画

mySprite.flipX = YES; 
mySprite.flipX = NO;

答案 1 :(得分:0)

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"animations/grossini.plist"];

CCSprite *sprite = [CCSprite spriteWithSpriteFrameName:@"grossini_dance_01.png"];
sprite.position = ccp( 100, 100);

CCSpriteSheet *spritesheet = [CCSpriteSheet spriteSheetWithFile:@"animations/grossini.png"];
[spritesheet addChild:sprite];
[self addChild:spritesheet];

NSMutableArray *animFrames = [NSMutableArray array];
for(int i = 1; i < 15; i++) {

    CCSpriteFrame *frame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"grossini_dance_%02d.png",i]];
    [animFrames addObject:frame];
}

CCAnimation *animation = [CCAnimation animationWithName:@"dance" frames:animFrames];
// 14 frames * 0.2sec = 2,8 seconds
[sprite runAction:[CCRepeatForever actionWithAction: [CCAnimate actionWithDuration:2.8f animation:animation restoreOriginalFrame:NO] ]];