0

押したときに「一時停止」と「再開」という言葉を切り替えるトグルメニューがあり、ゲーム全体を一時停止して再開します。つまり、再生中はメニューが「一時停止」(ここをタップして一時停止) と表示され、一時停止中はメニューが「再開」(ここをタップして再開) と表示されます。

これが問題です。ゲームを一時停止した後にホームボタンをタップしてから戻ると、ゲームが再開し、一時停止メニューが「再開」として表示されます。そして、これは私には意味がありません。私が望む最善の方法は、バックグラウンドに入るたびにゲームを一時停止し、バックグラウンドから再開することです。次の方法を見ていますが、実際には機能しません。

-(void)applicationWillResignActive:(UIApplication *)application{
}

- (void)applicationDidBecomeActive:(UIApplication *)application{
}

-(void)applicationWillEnterBackground:(UIApplication*)application{
}

-(void)applicationDidEnterBackground:(UIApplication *)application {
}

これらすべてのメソッドに CCLOG を入れただけですが、何も呼び出されていません。これらのメソッドを使用する前に、何かを設定/宣言する必要がありますか?

申し訳ありませんが、読むには少し長すぎます。あなたが私を助けてくれることを願っています。ありがとうございました。

4

3 に答える 3

0

これらのメソッドは、iOS がアプリケーションをバックグラウンドに強制したり、アプリケーションの実行を再開したりするときに呼び出されます。つまり、外部イベントによってアプリケーションがバックグラウンドに移行したり、バックグラウンドから戻ったりしたときに受け取るシグナルです。それらを直接呼び出そうとしないでください。関係を明確にしない限り、あなたのような「ユーザー作成」メニュー (再開/一時停止メニューなど) との実際の関係はありません。

したがって、次の方法で:

- (void)applicationWillResignActive:(UIApplication *)application {
    NSLog(@"<%@>:applicationWillResignActive - received signal, pausing sharedDirector.",[self class]);

    // here : place your code for forcing your menu in the 'Resume' state
    // i am assuming some kind of change in a button,  and
    // a state variable of your own that define and control
    // what it means to be 'paused' from your applications point of
    // view

    // then force the director to pause (animations, scheduling, touch, etc ...)

    [[CCDirector sharedDirector] pause];
}

その後、iOS がアプリケーションを実行中のアプリケーションとしてフォアグラウンドに配置することで制御を戻すと、次のようになります。

- (void)applicationDidBecomeActive:(UIApplication *)application {
    NSLog(@"<%@>:applicationDidBecomeActive - received signal, resuming sharedDirector.",[self class]);

    [[CCDirector sharedDirector] resume];
}

メニューは保証された「再開」状態にあるため、CCDirector を再起動する以外に特別なことをする必要はありません。ユーザーが Resume を押すと、ゲームが再び開始され、メニューが「一時停止」状態になります。

于 2012-02-21T14:38:55.027 に答える
0

理由はわかりませんが、私の経験では (cocos2d ではありません)、これらのメソッドを適用したい場合に追加の実装はありません。

おそらく、これを見てみる必要があります。

リンク 1 &リンク 2

于 2012-02-21T09:43:28.080 に答える