5

cocos2D で .gif アニメーションを再生しようとしています。このために、ライブラリ glgif を使用しています。ここで、アニメーションを表示するためにディレクターを一時停止し、アニメーションを表示するサブビューを追加します。アニメーションが完了したら、ディレクターを再開します。ただし、Director の状態を再開できず、空白が表示されます。そのため、このディレクターを一時停止して再開せずにこれを試してみましたが、それでも機能しませんでした。また、アニメーションの前にディレクターを切り離し、後で追加してみましたが、それでも機能しませんでした。

アプリケーションでディレクターを一時停止/一時停止し、適切に復元する方法はありますか?

ありがとう。

コードサンプル:

[[Director sharedDirector] pause]; 
[[Director sharedDirector] detach]; 
AppDelegate *del = [[UIApplication sharedApplication] delegate]; 
[del.window addSubview:del.viewController.view]; 
[del.window makeKeyAndVisible]; // this is code to call glgif class and start anim. 
//code to resume the director 
AppDelegate *del = [[UIApplication sharedApplication] delegate]; 
[[Director sharedDirector] resume]; 
[[Director sharedDirector] attachInView:del.window]; 
MScene *m = [MScene node]; 
[[Director sharedDirector] replaceScene:m];
4

3 に答える 3

2

単純なオーバーレイの場合は、一時停止して UIKit 呼び出しを直接実行してください。このような:

- (void)playerChanged
{
   [[CCDirector sharedDirector] pause];
   UIAlertView *alert = [[[UIAlertView alloc] 
      initWithTitle:NSLocalizedString(@"CHANGEPLAYER", nil) 
      message:nil
      delegate:self 
      cancelButtonTitle:nil 
      otherButtonTitles:NSLocalizedString(@"OK", nil),
      nil
   ] autorelease];
   [alert show];
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
   (void)alertView;
   (void)buttonIndex;

   [[CCDirector sharedDirector] resume];
}

本当にウィンドウ全体を占有している場合は、完全に破棄してください

[[CCDirector sharedDirector] end];

初期化をやり直して、戻るときに runWithScene を呼び出します。デタッチ/アタッチ ダンスがうまく機能しないか、一貫して機能していないようです。

于 2010-04-25T20:17:06.603 に答える
0

エラーの一部は、ビューのアタッチ/デタッチ、表示/非表示の結果として発生する可能性があります。私と私のチームはattachInView1 回だけ呼び出しapplicationDidFinishLoadingます。Cocos の上で他のビューを変更したい場合は、デリゲート ウィンドウ インスタンスを使用するsendToBackか呼び出します。bringToFront試してみる価値があるかもしれません。それが理にかなっている場合は教えてください。そうでない場合は、サンプルコードを投げることができます。

于 2010-02-09T22:15:07.320 に答える
0

ここで役立つかどうかは完全にはわかりませんが、言及する価値はあります。CCDirector の一時停止メソッドは、アニメーションを完全に停止するのではなく、遅くするだけです。StopAnimation メソッドで完全に停止します。したがって、一時停止/再開の代わりに stopAnimation/startAnimation を使用すると、この問題を解決できる可能性があります。

于 2012-11-06T10:18:40.903 に答える