恢复游戏 cocos2d

2024-08-12移动开发问题
6

本文介绍了恢复游戏 cocos2d的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我使用下面的代码来处理我的游戏中的暂停和恢复按钮

I used he code below to handle pause and resume buttons in my game

暂停:

-(void)pauseTapped{
...    
    [[SimpleAudioEngine sharedEngine] pauseBackgroundMusic];
    [[CCDirector sharedDirector] pause];
...
}

继续:

-(void)resumeGame: (id)sender {
...
    [self removeChild:pauseMenu cleanup:YES];

    [[SimpleAudioEngine sharedEngine] resumeBackgroundMusic];
    [[CCDirector sharedDirector] resume];
...
}

问题是如果使用点击暂停然后进入后台(点击主页按钮)模式当他返回时,游戏自动恢复,暂停菜单仍然存在

The problem is if the used click pause then enterBackground (click Home button) mode when he returns, the game automatically resume and the pause menu still exist

任何想法都会很棒

更新:

AppDelegate 代码:

the AppDelegate code:

- (void)applicationWillResignActive:(UIApplication *)application {
    [[CCDirector sharedDirector] pause];

}

- (void)applicationDidBecomeActive:(UIApplication *)application {
    [[CCDirector sharedDirector] resume];
}

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
    [[CCDirector sharedDirector] purgeCachedData];
}

-(void) applicationDidEnterBackground:(UIApplication*)application {
    [[CCDirector sharedDirector] stopAnimation];
}

-(void) applicationWillEnterForeground:(UIApplication*)application {
    [[CCDirector sharedDirector] startAnimation];
}

- (void)applicationWillTerminate:(UIApplication *)application {
    CCDirector *director = [CCDirector sharedDirector];

    [[director openGLView] removeFromSuperview];

    [viewController release];

    [window release];

    [director end]; 
}

- (void)applicationSignificantTimeChange:(UIApplication *)application {
    [[CCDirector sharedDirector] setNextDeltaTimeZero:YES];
}

- (void)dealloc {
    [[CCDirector sharedDirector] end];
    [window release];
    [super dealloc];
}

谢谢

推荐答案

您应该向您的应用程序委托添加一个属性,该属性将跟踪暂停是由用户点击暂停按钮还是自动引起的.

You should add a property to your app delegate that will keep track if pause was caused by user tapping pause button or automatically.

在 YourAppDelegate.h 中:

Inside YourAppDelegate.h:

@property (nonatomic) BOOL userPaused;

在 YourAppDelegate.h 中:

And inside YourAppDelegate.h:

@synthesize userPaused;

然后在场景的 pause 方法中,添加:

Then inside your scene's pause method, add:

YourAppDelegate *appDelegate = (YourAppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.userPaused = YES;

在场景的 resume 方法中,添加:

And inside your scene's resume method, add:

YourAppDelegate *appDelegate = (YourAppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.userPaused = NO;

现在您可以编辑您的应用委托的 -applicationWillResignActive: 方法以仅在 userPaused 未设置为 YES 时恢复.

Now you can edit your app delegate's -applicationWillResignActive: method to only resume if userPaused is not set to YES.

- (void)applicationDidBecomeActive:(UIApplication *)application {
    if (!self.userPaused) {
        [[CCDirector sharedDirector] resume];
    }
}

这篇关于恢复游戏 cocos2d的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

硬件音量按钮更改应用程序音量
Hardware Volume buttons change in app volume(硬件音量按钮更改应用程序音量)...
2024-08-12 移动开发问题
10

Cocos2d - 如何检查不同层中对象之间的交集
Cocos2d - How to check for Intersection between objects in different layers(Cocos2d - 如何检查不同层中对象之间的交集)...
2024-08-12 移动开发问题
8

恢复游戏 cocos2d
Resume game cocos2d(恢复游戏 cocos2d)...
2024-08-12 移动开发问题
6

突出显示朗读文本(在 iPhone 的故事书类型应用程序中)
Highlight Read-Along Text (in a storybook type app for iPhone)(突出显示朗读文本(在 iPhone 的故事书类型应用程序中))...
2024-08-12 移动开发问题
9

Cocos2D + 仅禁用 Retina iPad 图形
Cocos2D + Disabling only Retina iPad Graphics(Cocos2D + 仅禁用 Retina iPad 图形)...
2024-08-12 移动开发问题
10

如何将 32 位 PNG 转换为 RGB565?
How to convert 32 bit PNG to RGB565?(如何将 32 位 PNG 转换为 RGB565?)...
2024-08-12 移动开发问题
21