Cocos2d,我忘记了延迟场景的命令

时间:2022-04-27 10:05:29

I want the game over scene to not show up for a few seconds so you can actually see how you died. I remember doing this a while back but I can not remember for the life of me.

我希望场景中的游戏不会显示几秒钟,这样你就可以看到你是如何死的。我记得有一段时间这样做,但我不记得我的生活。

        GameOverScene *gameOverScene = [GameOverScene node];
        [gameOverScene.layer.label setString:@"You Lose"];
        [[CCDirector sharedDirector] replaceScene:gameOverScene];         

Really appreciate it.

真的很感激。

3 个解决方案

#1


0  

Not getting what exactly you need. Still suggesting these two..try

没有得到你需要的东西。仍在暗示这两个......

[self performSelector:@selector(showGameOverScene) withObject:nil afterDelay:2.0f];

Replace with time:

替换为时间:

[[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:1.0 scene:[GameOverScene scene] withColor:ccWHITE]];

#2


1  

Use NSObject's [self performSelector:@selector(gameOver) withObject:nil afterDelay:5]; and replace the scene in the new method GameOver:

使用NSObject的[self performSelector:@selector(gameOver)withObject:nil afterDelay:5];并替换新方法GameOver中的场景:

- (void)gameOver
{
    GameOverScene *gameOverScene = [GameOverScene node];
    [gameOverScene.layer.label setString:@"You Lose"];
    [[CCDirector sharedDirector] replaceScene:gameOverScene];
}

#3


0  

A solution may be to schedule a selector to do your actions:

解决方案可能是安排选择器执行您的操作:

[[CCScheduler sharedScheduler] scheduleSelector:@selector(myMethod:) forTarget:self interval:2.0f paused:[[CCDirector sharedDirector] isPaused]];

And your method implementation:

你的方法实现:

- (void)myMethod:(ccTime)dt
{
    [[CCScheduler sharedScheduler] unscheduleSelector:_cmd forTarget:self];

    //your actions here
    GameOverScene *gameOverScene = [GameOverScene node];
    [gameOverScene.layer.label setString:@"You Lose"];
    [[CCDirector sharedDirector] replaceScene:gameOverScene];
}

I hope this helps.

我希望这有帮助。

#1


0  

Not getting what exactly you need. Still suggesting these two..try

没有得到你需要的东西。仍在暗示这两个......

[self performSelector:@selector(showGameOverScene) withObject:nil afterDelay:2.0f];

Replace with time:

替换为时间:

[[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:1.0 scene:[GameOverScene scene] withColor:ccWHITE]];

#2


1  

Use NSObject's [self performSelector:@selector(gameOver) withObject:nil afterDelay:5]; and replace the scene in the new method GameOver:

使用NSObject的[self performSelector:@selector(gameOver)withObject:nil afterDelay:5];并替换新方法GameOver中的场景:

- (void)gameOver
{
    GameOverScene *gameOverScene = [GameOverScene node];
    [gameOverScene.layer.label setString:@"You Lose"];
    [[CCDirector sharedDirector] replaceScene:gameOverScene];
}

#3


0  

A solution may be to schedule a selector to do your actions:

解决方案可能是安排选择器执行您的操作:

[[CCScheduler sharedScheduler] scheduleSelector:@selector(myMethod:) forTarget:self interval:2.0f paused:[[CCDirector sharedDirector] isPaused]];

And your method implementation:

你的方法实现:

- (void)myMethod:(ccTime)dt
{
    [[CCScheduler sharedScheduler] unscheduleSelector:_cmd forTarget:self];

    //your actions here
    GameOverScene *gameOverScene = [GameOverScene node];
    [gameOverScene.layer.label setString:@"You Lose"];
    [[CCDirector sharedDirector] replaceScene:gameOverScene];
}

I hope this helps.

我希望这有帮助。