0

ゲームにキャラクターがいて、そのクラスがこのようなものだとしましょう。


@interface Player
{
  CCSprite* stand;
  CCAnimation* run;
}

-(void) playRunAction
{
  // Create CCAnimate* object from CCAnimation object (run)

  [self runAction:runAniate];
}

-(void) playStandAction
{
  stand.visible = YES;
  [self stopAllActions];
}

プレイヤーは立ったり走ったりすることができます。

ただし、問題の 1 つは、playStandAction が呼び出された後、スタンド アニメーションが表示され、実行中のアニメーションが停止しても、実行中のアニメーションの 1 フレームがまだ残っていることです。(これで、「スタンド スプライト」と「実行中のアニメーション フレームの 1 つ」が一緒に表示されます。)

実行中のアニメーションを非表示にするにはどうすればよいですか?

Ps 誰かが 1 つのキャラクターでアニメーションを管理するためのより良い方法を教えてくれませんか? アニメーションが追加されたため、これは完全に災害です。

4

2 に答える 2

0
-(void) playStandAction
{
//Make the animation object.visible = NO; here 
  stand.visible = YES;
  [self stopAllActions];
}

そして

-(void) playRunAction
{
  // Create CCAnimate* object from CCAnimation object (run)
  //Make the animation object.visible = YES; here
  stand.visible = NO;
  [self runAction:runAniate];
}
于 2012-05-14T09:00:44.273 に答える
0

パラメータ付きのメソッドを使用restoreOriginalFrameして渡すyes

CCAnimateオブジェクトを作成するためにどのメソッドを呼び出しているのかわかりません...

このような:

[CCAnimate actionWithAnimation:animation restoreOriginalFrame:YES]];

また、レイヤーで runAction を呼び出さないでください。スプライト自体でアクションを実行することをお勧めします...

2 つの異なるオブジェクトを非表示にして表示する必要はありません...

お役に立てれば。:)

于 2012-05-14T09:04:17.647 に答える