【问题标题】:Animating a CCSprite on cocos2d?在 cocos2d 上为 CCSprite 设置动画?
【发布时间】:2011-04-05 16:58:02
【问题描述】:

大家好,我是 cocos2d 和 iPhone 开发的新手,我目前正在尝试创建像“PapiJump”这样的游戏, 我目前遇到的问题是在我的游戏中为角色 CCSprite 设置动画, 我创建了我的角色的 3 张图像,角色指向右、左和中间 (http://i53.tinypic.com/ngzoyh.png)

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

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

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

我已经阅读了Ray's tutorial 关于动画 CCSprites 的内容,但我不知道如何实现我需要的结果.. 提前感谢,对不起我的英语不好!

【问题讨论】:

    标签: iphone animation cocos2d-iphone ccsprite


    【解决方案1】:
    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>"];
    

    (或者缓存它们并切换)

    【讨论】:

      【解决方案2】:

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

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

      或者如果你有动画:

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

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

      【讨论】:

      • 感谢您的帮助,我试图澄清我的问题,我希望它现在更好! :D
      【解决方案3】:

      如果我正确地回答了您的问题,我可以建议两种方法来解决您的问题:
      首先,您可以将对象旋转到倒置,然后使用 FlipX(或 FlipY)标志标记为 true 继续您以前的动画,或者您可以添加仅动画角色旋转的动画,并且在完成时更改 FLipX(或FlipY) 状态。

      【讨论】:

      • 对不起,这不是我的意思,不过谢谢,~我会尽力澄清我的问题
      猜你喜欢
      • 2014-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-04
      • 1970-01-01
      • 2013-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多