嗨我正在为iphone制作一款游戏,当精灵移动时,我想让它在3张图像之间改变图像,这样看起来它正在运行。 我现在正在使用cocos2d而且我对cocos2d很新。我知道如何使用cocoa执行此操作,但这不适用于cocos2d。
所以我的问题是我如何更改3,图像之间的精灵图像,我想在我将手指放在屏幕上的位置时将其循环?
提前致谢。
答案 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] ]];