2

だから私は現在、グラフなどのようなものを画面に描くアプリに取り組んでいます。それとその機能をテストしているときに、この問題に遭遇しました。

押すと設定シーンに移動するボタンがあります。私はこのようにシーンを初期化します

+(id) scenew
{
   CCScene *scene = [CCScene node];
   Settings *layer = [Settings node];    
   [scene addChild: layer]; 
   return scene;

}

そのシーンには、完了ボタンと新機能ボタンの 2 つのボタンがあります。

done = [CCMenuItemImage itemFromNormalImage:@"done.png" selectedImage:@"done.png" target:self selector:@selector(done:)];

新機能ボタンを押すとすぐに進みますが、完了ボタンには 2 ~ 3 秒の遅延があります。アプリにはいくつかのコンソール メッセージが表示されており、それを押すと、アプリの起動時と同じようにグラフ全体が再計算されるようです。すべてのボタンは、replaceScene である同じ CCDirector 関数を呼び出します。

-(void) whatNew: (id)sender
{
[[CCDirector sharedDirector] replaceScene: [New scene]];
}

-(void) done: (id)sender
{
[[CCDirector sharedDirector] replaceScene: [Main scene]];
}

これを少し最適化する方法はありますか...つまり...replaceSceneを使用する効率的な方法、またはグラフの再計算を強制しない他の何かですか? そのボタンが押されるたびに、実際には4500行以上のグラフクラス実装の上部にジャンプするためですOo

4

1 に答える 1

2

上記の最初のボタンはシーン内にあり、Mainシーンに行くと思いますSetting

Mainアプリ フローをシーンに転送するときにシーンをメモリに保持するには、次の代わりにSetting使用するだけです。pushScene:replaceScene:

// in Main scene class
[[CCDirector sharedDirector] pushScene:[Setting scene]];

次に、Settingシーン内から、単純に使用してシーンpopSceneに戻ります。Main

-(void) done: (id)sender
{
    [[CCDirector sharedDirector] popScene];
}

基本的pushScene:には、現在のシーンの上に新しいシーンをプッシュしてpopSceneポップアウトし、アプリ フローをデバイス メモリにまだ残っている前のシーンに戻すだけです。

于 2012-07-03T13:04:07.967 に答える