1

私はCCSprite変数であるキャラクターのクラスを持っています。ボタンに触れたりジャンプしたりした後、キャラクターがポイントに移動し、歩行アニメーションをアニメートします。すべて正常に動作しますが、アニメーションの後、CCSprite には不良フレーム (歩行フレームの 1 つ) があります。更新関数の最後にこのコードを書きましたが、その後はフリーズしたようで、キャラクターはジャンプしたり、それ以上歩くことができず、実行中のアクションの数は常に 1 です。

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

changeState 関数:

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");

そして、ケースIDLEに変更しました:

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