0

私はアニメーション付きのゲームを持っています。ゲーム シーンでは、以下の方法を使用してゲームを一時停止します (ユーザーが iOS デバイスの任意の場所をタップするとゲームが一時停止されるため、完全に機能します)。

-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch=[touches anyObject];
    CGPoint locationOfTouch=[self convertTouchToNodeSpace: touch];

    CGRect rectOfScreen=CGRectMake(0, 0, screenSize.width, screenSize.height);

if (CGRectContainsPoint(rectOfScreen, locationOfTouch)) 
{
    [[CCDirector sharedDirector] replaceScene:[PauseScene scene]];
    [self unschedule:@selector(spawnEnemies:)];
    [self unschedule:@selector(checkCollisionOfEnemyWithBullet:)];
    [self unschedule:@selector(update:)];
    [self unschedule:@selector(isJoystickActivated:)];
    [self unschedule:@selector(checkHasGameEnded:)];

    [[CCDirector sharedDirector] pause];
}

}

再開アクションを実装するために、PauseLayer:CCLayer を作成しました。ここで、ゲームを再開する次のメソッドを実装しました。

-(void) continueGame:(id)sender
{
[[CCDirector sharedDirector] resume];
[[CCDirector sharedDirector] replaceScene:[GameSceneLayer scene]];
//[self resumeSchedulerAndActions];
}

上記のメソッドを呼び出す方法のコードは次のとおりです。

 CCMenuItemFont* continue_game=[CCMenuItemFont itemWithString:@"continue game" target:self selector:@selector(continueGame:)];

しかし、ゲームを続けるを選択すると、ゲームは空白のポイントから始まります。すべてのゲーム状態、すべてのゲーム キャラクターが新しくなります。ユーザーによって一時停止された最初のポイントからゲームを再開するにはどうすればよいですか? ありがとうございました!

4

1 に答える 1

0

次の 2 つの cocos2D 関数を使用して、一時停止と再開を行うことができます。

[self pauseSchedulerAndActions]; //pause
[self resumeSchedulerAndActions];//resume

また、bool 変数を 1 つ維持し、必要なときにいつでもチェックします。

   bool mISGamePaused;
于 2012-08-18T10:15:14.363 に答える