首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Swift游戏中创建2-3小时的前台和后台计时器?

如何在Swift游戏中创建2-3小时的前台和后台计时器?
EN

Stack Overflow用户
提问于 2016-11-01 19:47:32
回答 1查看 88关注 0票数 0

我有一个游戏,当玩家输了的时候我会添加一个计时器,现在是3个小时。当时间到期时,玩家可以免费获得我游戏中的15枚硬币。

现在,我使用的是NSTimer。问题是,每当我将游戏置于后台模式时,计时器会随着我在文档中的阅读而停止。因此,计时将仅针对游戏播放时间运行,而不是始终运行。

我如何才能做到这一点?我甚至会在计时器结束时向用户发送通知,这样用户就可以进入我的游戏并免费获取硬币。

这是我到目前为止所知道的:

代码语言:javascript
复制
var coinCountdown = 10800 // 3hr = 10800
var coinCurrentTimer = NSTimer.init()
var coinCountdownLabel = SKLabelNode()

然后,在我的SKScene的初始化中,我这样做:

代码语言:javascript
复制
self.coinCurrentTimer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: #selector(GameScene.updateCoinCountdown), userInfo: nil, repeats: true)

这是updateCoinCountdown方法:

代码语言:javascript
复制
func updateCoinCountdown() {
        if(self.coinCountdown > 0){
            var hour = String(self.coinCountdown / 3600)
            var minutes = String((self.coinCountdown % 3600) / 60)
            var seconds = String((self.coinCountdown % 3600) % 60)

            if Int(hour) < 10 {
                hour = "0" + hour
            }

            if Int(minutes) < 10 {
                minutes = "0" + minutes
            }

            if Int(seconds) < 10 {
                seconds = "0" + seconds
            }

            self.coinCountdownLabel.text = hour + ":" + minutes + ":" + seconds
            self.coinCountdown = self.coinCountdown - 1

            let defaults = NSUserDefaults.standardUserDefaults()
            if defaults.valueForKey("coinCountdown") != nil {
                defaults.setValue(self.coinCountdown, forKey: "coinCountdown")
            }

        }else{
            print("Done! Send notification and show get coin button")
        }
    }

如有任何提示,将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2016-11-01 20:40:24

我实际上还没有做过这样的事情,但我有一个想法可以做到。

当“定时器”应该启动时,你可以安排一个本地静默通知,提醒应用程序时间已过或事件已被触发。

当应用程序接收到这个预定的通知时,它可以运行一些基本的检查,看看自预定的通知以来是否发生了任何事情,这可能会取消它,如果没有,它可以触发一个即时的本地通知,以提醒用户该事件。

请参阅Local and remote notifications的文档,它甚至引用了一个事件,其中的"TIMER_EXPIRED“类似于我上面的建议。

编辑:查看文档,看起来你不能安排一个无声的通知,但理论上这仍然适用于你的情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40359444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档