1

我有一类字符,其中是 CCSprite 变量。触摸按钮或跳跃后,角色正在移动到点并动画行走动画,一切正常,但动画 CCSprite 有坏帧(行走帧之一)。在我的更新函数结束时我写了这段代码,但是它就像冻结一样,角色不能跳跃或走路,运行动作的数量总是1:

if(this.sprite.numberOfRunningActions() == 0){
  if(this.state != CharacterState.IDLE){
    this.changeState(CharacterState.IDLE); // without this row it works still fine
  }
}

改变状态功能:

public void changeState(CharacterState state){
  sprite.stopAllActions();
  this.state = state;
  switch(state){
    case IDLE:{ this.sprite = CCSprite.sprite(CCSpriteFrameCache.sharedSpriteFrameCache().spriteFrameByName("Player.png")); break;}
    case WALK_LEFT:{ this.sprite.runAction(wAction); break; }
     .
     .
     .
4

1 回答 1

0

好的,我一个人解决了。:) 我创建了 CCSpriteFrame 类型的类变量。

CCSpriteFrame frame_idle;

在类构造函数中:

frame_idle = CCSpriteFrameCache.sharedSpriteFrameCache().spriteFrameByName("Player.png");

和 case IDLE 我已更改为:

case IDLE:{ this.sprite.setDisplayFrame(frame_idle); break; }
于 2013-05-02T19:28:43.177 回答