0

UIKit ViewControllerから、ゲームを開始するためにこれを行います。

if (director.runningScene == nil)
    {
        [director runWithScene:[MyGameLayer scene]];
    }
    [director startAnimation];

MyGameLayerは次のようになります。

+(id) scene {
    CCScene *scene = [CCScene node];
    MyGameLayer* layer = [MyGameLayer node];
    [scene addChild:layer z:0 tag:GameSceneLayerTagGame];


    return scene;
}

-(id) init {
    if ((self=[super init]))
    {
        NSLog(@"init!");
        self.isTouchEnabled = YES;

        [self initPhysics];

        [self scheduleUpdate];
    }
    return self;
}

初めてゲームをプレイするときは、すべて正常に動作します。-(void) update: (ccTime) dt必要に応じて呼び出されます。ゲームを終了してこれを行う場合:

CCDirectorIOS* director = (CCDirectorIOS*)[CCDirector sharedDirector];
    [director stopAnimation];
    [director end];

そして、もう一度ゲームをプレイします。呼び出されることは-(void) update: (ccTime) dtわかっていますが、呼び出されません-init()。ゲームは画面に表示されますが、更新スケジュールは2回目は機能しません。Cocos2dがアップデートをスケジュールしない原因とその修正方法を教えてください。

4

4 に答える 4

0

バックグラウンドで作業しているときにディレクターが4fpsで更新されないようにするために行っていることを実行していると仮定すると、ディレクターを再起動する必要があります。

そうは言っても、applicationDidBecomeActiveに次のコードを追加します

[[CCDirector sharedDirector] stopAnimation]; // call this to make sure you don't start a second display link!
[[CCDirector sharedDirector] resume];
[[CCDirector sharedDirector] startAnimation];

引用元:cocos2dゲームで一時停止/再開を実装する方法は?

私が間違っている場合は、ディレクターの電話で何をしようとしているのか教えてください

于 2013-03-14T03:17:19.280 に答える
0

ついにこれを理解した。終了ボタンのあるゲームでメニューを開くと、次のようにゲームを一時停止していました。

[[self gameLayer] pause];

そのため、新しいゲームを開始するとき、シーンとレイヤーの割り当てが解除され、新しいglViewを作成していても、Cocos2dは一時停止されていました。

これを使用すると、次のように機能します。

[[self gameLayer] pauseSchedulerAndActions];
于 2013-03-15T00:12:23.303 に答える
0

onEnter*/onExit*メソッドの 1 つをオーバーライド (実装) しましたか? その場合は、必ずスーパー実装を呼び出してください。そうしないと、スケジューリングとタッチ入力が機能しない可能性があります。

更新: 問題があることが知られている cocos2d を完全にシャットダウンするため、それ以外は [director end] を呼び出さないようにしてください。

于 2013-03-14T00:32:21.870 に答える
0

このコードを使用してゲームを「一時停止」すると:

[[CCDirector sharedDirector]pause];

また、シーンをプッシュする前に、再起動またはメニュー コード ブロックでディレクターを「再開」する必要があります。

[[CCDirector sharedDirector]resume]; 
于 2015-04-07T08:09:48.543 に答える