在cocos2d上动画化CCSprite?

时间:2011-04-05 16:58:02

标签: iphone animation cocos2d-iphone ccsprite

嘿伙计们,我是cocos2d和iPhone开发的新手,我目前正试图制作像“PapiJump”这样的游戏, 我目前遇到的问题是,在我的游戏中为角色CCSprite制作动画, 我已经创建了3个我的角色图像,角色指向右,左和中间(http://i53.tinypic.com/ngzoyh.png)

所以当角色改变方向(左或右)时,它不会直接“跳”到另一个方向但会动画..

在我使用TouchesEnded方法的代码中,在此方法中我设置了一个名为“touchState”的变量, 因此,如果用户触摸屏幕的右侧,则会将“touchState”设置为1,否则将其设置为2(表示左侧)。

然后在“init”方法中我创建了一个“schedule”,每隔0.5秒运行另一个方法,命名为:“updateGame”, “updateGame”方法更新了玩家的位置,它的工作原理如下: player.position = ccp(player.position.x,player.position.y - playerGravity.y);

我已阅读Ray's tutorial关于动画CCSprites但我不知道如何实现我需要的结果.. 提前谢谢,抱歉我的英文不好!

3 个答案:

答案 0 :(得分:3)

NSMutableArray *walkAnimFrames = [NSMutableArray array];
for(int i = 1; i <= 4; ++i)
{
    [walkAnimFrames addObject: [[CCSpriteFrameCache sharedSpriteFrameCache]     spriteFrameByName: [NSString stringWithFormat:@"spr_fillin_0%d.png", i]]];
}
CCAnimation *walkAnim = [CCAnimation animationWithFrames:walkAnimFrames delay:0.0333f];

_sprite = [CCSprite spriteWithSpriteFrameName:@"spr_fillin_01.png"];
[_sprite runAction:[CCRepeatForever actionWithAction: [CCAnimate actionWithAnimation:walkAnim restoreOriginalFrame:NO]]];

[<CCLAYER OR BATCH NODE> addChild:_sprite];

编辑:看起来你正在谈论只是翻转图像。您可以使用

重新获取精灵
_sprite = [CCSprite spriteWithSpriteFrameName:@"<New Sprite File>"];

(或缓存它们并切换)

答案 1 :(得分:0)

你能澄清一下你的问题吗?如果要设置不同的精灵框架,可以使用setDisplayFrame

CCSpriteFrame *spriteFrame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:frameName];
[sprite setDisplayFrame:frame];

或者如果你有动画:

[sprite runAction:[CCAnimate actionWithAnimation:runAnimation restoreOriginalFrame:NO]];

但我觉得这个问题有点模糊。

答案 2 :(得分:0)

如果我正确地提出了你的问题,我可以提出两种方法来解决你的问题:
  首先,您可以将对象旋转到倒置,然后使用FlipX(或FlipY)标记标记为true继续您之前的动画,或者您可以添加动画,仅动画字符旋转,并且当它完成时更改FLIPX(或FlipY)状态。