cocoa-touch - 如果按下主页按钮则结束比赛
<p><p>如果按下设备上的主页按钮,我将如何结束比赛/断开对面玩家的连接和/或移除比赛制作器标准界面 (GameKit)?我在屏幕上还有一个“主菜单”按钮,如果按下该按钮,我想结束比赛/断开对方玩家的连接。我正在使用 GameKit 来查找和开始比赛。</p>
<p>我是多人游戏新手,因此感谢您的帮助。</p>
<pre><code>-(void) match:(GKMatch*)match player:(NSString*)playerID didChangeState:(GKPlayerConnectionState)state
{
switch (state)
{
case GKPlayerStateConnected:
;
break;
case GKPlayerStateDisconnected:
CCLOG(@"Disconnected");
;
break;
}
if (matchStarted == NO && match.expectedPlayerCount == 0)
{
matchStarted = YES;
;
}
}
-(void) disconnectCurrentMatch
{
CCLOG(@"Quit Match");
;
currentMatch.delegate = nil;
;
currentMatch = nil;
}
</code></pre>
<p>这就是我用来断开玩家连接的全部内容。然后当玩家按下“主菜单”按钮时,这就是代码。</p>
<pre><code>-(void)Menu: (id) sender
{
didQuit = YES;
if (isSingle == YES)
{
GameKitHelper* gkHelper = ;
;
gkHelper.delegate = nil;
}
[ replaceScene: ];
CCLOG(@"Return Main Menu");
}
</code></pre>
<p>它将场景替换为主菜单,但从不将状态更改为断开连接。</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>乔恩,</p>
<p>按下主页按钮时,您的应用程序委托(delegate)将收到 <code>-(void)applicationDidEnterBackground:(UIApplication*)application</code> 回调。</p>
<p>您有大约 5 秒的时间(在 Springboard 终止您的应用程序之前)执行您需要做的任何事情来清理您的应用程序(除非您需要更多时间,您可以向 iOS 请求,但不能保证会收到)。 </p>
<p>你如何“清理”?正如您所提到的 - 您的比赛有 2 名玩家,因此玩家断开连接或退出对游戏的影响相同 - 结束游戏(假设玩家无法继续自己玩)。</p>
<p>您的离开玩家将向 GameKit 发送 <code>-disconnect</code> 消息。</p>
<p>玩家留下的程序需要有一个符合 <a href="http://developer.apple.com/library/ios/#documentation/GameKit/Reference/GKMatchDelegate_Ref/Reference/Reference.html#//apple_ref/occ/intfm/GKMatchDelegate/match%3adidReceiveData%3afromPlayer%3a" rel="noreferrer noopener nofollow">GKMatchDelegate</a> 的对象。协议(protocol)并作为 <code>GKMatch</code> 的委托(delegate)接收回调。</p>
<p>当对方玩家断开连接时,GKMatch 将调用代表:</p>
<pre><code>- (void)match:(GKMatch *)match player:(NSString *)playerID didChangeState:(GKPlayerConnectionState)state`
</code></pre>
<p>所以,现在您的被遗忘代码的玩家也会收到通知。在该方法中,检查它是否断开连接 - 如果是,请按照您自己的逻辑来确定玩家“挂断”时想要发生的事情。</p></p>
<p style="font-size: 20px;">关于cocoa-touch - 如果按下主页按钮则结束比赛,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/6171349/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/6171349/
</a>
</p>
页:
[1]