• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

cocoa-touch - 如果按下主页按钮则结束比赛

[复制链接]
菜鸟教程小白 发表于 2022-12-13 07:51:06 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

如果按下设备上的主页按钮,我将如何结束比赛/断开对面玩家的连接和/或移除比赛制作器标准界面 (GameKit)?我在屏幕上还有一个“主菜单”按钮,如果按下该按钮,我想结束比赛/断开对方玩家的连接。我正在使用 GameKit 来查找和开始比赛。

我是多人游戏新手,因此感谢您的帮助。

-(void) matchGKMatch*)match playerNSString*)playerID didChangeStateGKPlayerConnectionState)state
{
    switch (state)
    {
        case GKPlayerStateConnected:
            [delegate onPlayerConnected:playerID];
            break;
        case GKPlayerStateDisconnected:
            CCLOG(@"Disconnected");
            [delegate onPlayerDisconnected:playerID];
            break;
    }

    if (matchStarted == NO && match.expectedPlayerCount == 0)
    {
        matchStarted = YES;
        [delegate onStartMatch];
    }
}


-(void) disconnectCurrentMatch
{
    CCLOG(@"Quit Match");
    [currentMatch disconnect];
    currentMatch.delegate = nil;
    [currentMatch release];
    currentMatch = nil;
}

这就是我用来断开玩家连接的全部内容。然后当玩家按下“主菜单”按钮时,这就是代码。

-(void)Menu: (id) sender
{
    didQuit = YES;

    if (isSingle == YES)
    {
        GameKitHelper* gkHelper = [GameKitHelper sharedGameKitHelper];
        [gkHelper disconnectCurrentMatch];
        gkHelper.delegate = nil;
    }

    [[CCDirector sharedDirector] replaceScene: [MainMenu scene]];
    CCLOG(@"Return Main Menu");
}

它将场景替换为主菜单,但从不将状态更改为断开连接。



Best Answer-推荐答案


乔恩,

按下主页按钮时,您的应用程序委托(delegate)将收到 -(void)applicationDidEnterBackgroundUIApplication*)application 回调。

您有大约 5 秒的时间(在 Springboard 终止您的应用程序之前)执行您需要做的任何事情来清理您的应用程序(除非您需要更多时间,您可以向 iOS 请求,但不能保证会收到)。

你如何“清理”?正如您所提到的 - 您的比赛有 2 名玩家,因此玩家断开连接或退出对游戏的影响相同 - 结束游戏(假设玩家无法继续自己玩)。

您的离开玩家将向 GameKit 发送 -disconnect 消息。

玩家留下的程序需要有一个符合 GKMatchDelegate 的对象。协议(protocol)并作为 GKMatch 的委托(delegate)接收回调。

当对方玩家断开连接时,GKMatch 将调用代表:

- (void)matchGKMatch *)match playerNSString *)playerID didChangeStateGKPlayerConnectionState)state`

所以,现在您的被遗忘代码的玩家也会收到通知。在该方法中,检查它是否断开连接 - 如果是,请按照您自己的逻辑来确定玩家“挂断”时想要发生的事情。

关于cocoa-touch - 如果按下主页按钮则结束比赛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6171349/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap