如何实现SpriteKit定时器?

2024-01-09

我目前正在尝试为我的精灵套件游戏实现一个计时器,但我没有让它工作。定时器的初始值始终保持不变。

我假设我需要以某种方式/某处更新标签,但我不知道如何以及在哪里:?我不明白这一点。有任何想法吗?

这是我的 GameScene 类中的代码

    let levelTimerLabel = SKLabelNode(fontNamed: "Chalkduster")
var levelTimerValue: Int  = 500

var levelTimer = NSTimer()

func startLevelTimer() {

    levelTimerLabel.fontColor = SKColor.blackColor()
    levelTimerLabel.fontSize = 40
    levelTimerLabel.position = CGPoint(x: size.width/2, y: size.height/2 + 350)
    addChild(levelTimerLabel)

    levelTimer = NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: Selector("levelCountdown"), userInfo: nil, repeats: true)

    levelTimerLabel.text = String(levelTimerValue)

}

func levelCountdown(){

    levelTimerValue--

}

我会坚持SKActions对于 SpriteKit 中的此类任务,因为NSTimer不受场景或视图暂停状态的影响,因此它可能会给您带来麻烦。或者至少,它会require您可以实现暂停功能,以便在某些情况下暂停计时器,例如当用户暂停场景或接到电话等时。 阅读更多here https://stackoverflow.com/a/23978854/3402095 about SKAction vs NSTimer vs GCDSpriteKit 中与时间相关的操作。

import SpriteKit

class GameScene: SKScene {

var levelTimerLabel = SKLabelNode(fontNamed: "ArialMT")

//Immediately after leveTimerValue variable is set, update label's text
var levelTimerValue: Int = 500 {
    didSet {
        levelTimerLabel.text = "Time left: \(levelTimerValue)"
    }
}

override func didMoveToView(view: SKView) {



levelTimerLabel.fontColor = SKColor.blackColor()
levelTimerLabel.fontSize = 40
levelTimerLabel.position = CGPoint(x: size.width/2, y: size.height/2 + 350)
levelTimerLabel.text = "Time left: \(levelTimerValue)"
addChild(levelTimerLabel)

    let wait = SKAction.waitForDuration(0.5) //change countdown speed here
    let block = SKAction.runBlock({
        [unowned self] in

        if self.levelTimerValue > 0{
            self.levelTimerValue--
        }else{
            self.removeActionForKey("countdown")
        }
    })
    let sequence = SKAction.sequence([wait,block])

    runAction(SKAction.repeatActionForever(sequence), withKey: "countdown")
}

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

    //Stop the countdown action

    if actionForKey("countdown") != nil {removeActionForKey("countdown")}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何实现SpriteKit定时器? 的相关文章

随机推荐

  • 使用 new 关键字创建的 Spring bean (@Component) 中的自动装配

    我有两颗春豆 如下 Component A Scope prototype public class A extends TimerTask Autowired private CampaignDao campaignDao Autowir
  • 当单元格背景颜色发生变化时,是否可以在 Excel 中触发事件?

    正如标题所说 我试图在单元格更改背景颜色时发生一些事情 比如说从红色变为绿色 但是只有当用户更改单元格中的值时才会触发工作表的更改事件 是否有解决方法来完成我想做的事情 或者这是一项不可能完成的任务 No 如 这是不可能的 VBA 中没有可
  • 将 SFINAE 与通用 lambda 结合使用

    泛型 lambda 可以利用 替换失败不是错误 规则 例子 auto gL auto func auto param1 auto params gt enable if t lt is integral lt std decay t
  • Listview数据绑定导致formview数据丢失

    在我的代码中 通过 Formview 研究后 我需要调用 listview databind 这使得无法获取 Formview 数据 即使它们仍然出现在屏幕中 这是我的代码 protected void DemandeSearchFormV
  • 如何从 pandas 数据框中的每一列创建子图

    我有一个包含 36 列的数据框 df 这些列绘制在单个绘图图表上 并使用下面的代码以 html 格式显示 import plotly offline as py import plotly io as pio pio write html
  • Servlet 3.0 的构造函数依赖注入?

    从 Servlet 3 0 开始 可以通过编程方式注册 Servlet 实例javax servlet ServletContext addServlet 这个类还有一个createServlet分析一些注释并执行依赖注入的方法 我想如果我
  • 如何枚举 ui-router 中的注册状态?

    我想知道是否有办法在使用时列出所有注册状态用户界面路由器 https github com angular ui ui router 如果您查看文档 state get 对于最新版本的 ui router 您会注意到 不向函数传递任何参数应
  • 为什么 javascript typeof 总是返回“object”

    我哪里做错了 我会等待 Class 作为此代码的结果 但它不会 这是来自对象函数 Typeof 不是这样工作的 它只返回内置类型 你可以尝试 this constructor name Class 它将一直检查原型链 看看是否this或任何
  • Safari不派冰候选人

    在 Safari 中不起作用的示例 https github com Kurento kurento tutorial node tree master kurento one2many call https github com Kure
  • Common lisp、CFFI 和实例化 C 结构

    我已经在谷歌上搜索了大约 哦 三个小时 寻找这个 问题 的解决方案 我试图弄清楚如何使用 CFFI 在 lisp 中实例化 C 结构 我在 c 中有一个结构 struct cpVect cpFloat x y 简单吧 我已经自动生成了到此结
  • Python json.dumps() 将我的所有数据输出到一行中,但我希望每个条目都有一个新行

    我正在使用 Python 和一些 json 数据 我正在循环访问我的数据 都是字典 当我将循环值打印到控制台时 我每行得到 1 个字典 但是 当我使用 json dumps 执行同一行代码将对象转换为能够输出的字符串时 我会在字典中得到多行
  • 在 Xcode 中强制刷新代码签名

    在我们的环境中 我们跨多个项目和平台共享资源 为 iPhone 进行构建时 仅需要这些资源的子集 由于该子集仍然相当大 因此我们有一个清单文件列出了其中的内容 这限制了副本 我们有自己的 Python 脚本来执行复制 仅刷新已更改的文件 我
  • Discord.js - 如何编辑 message.embed() 语句?

    我正在执行 ping 命令 编码非常简单 但我完全不知道如何编辑我正在使用的嵌入 这是我的代码 我正在使用命令处理程序来解释exports run 语句 const Discord require discord js exports ru
  • 记住在整个网站上按下的选项卡

    我创建了自己的带有超链接和 div 的选项卡 我将它们放在侧边栏中 当单击超链接时 我在相关 div 上使用 jquery show 和 hide 它工作正常 但是 我希望在用户导航时在整个网站上记住最后单击的链接 选项卡 我怎样才能做到这
  • Jquery 单击事件 - 需要两次单击才能触发

    这可能非常简单 但我正在努力找出发生了什么 在 JS 小提琴上 http jsfiddle net 3hHAX http jsfiddle net 3hHAX 有两个链接输出到 打开视频模式 正如链接文本所示 这两个链接应该打开一个模型弹出
  • 在 R 中排列 3 维列联表以运行 Cochran-Mantel-Haenszel 分析?

    我正在尝试在 R 中运行 Mantel Haenszel 分析 以确定在考虑组内 诊断 比率时比例测试的比较是否仍然显着 此测试可在 stats 包中找到 library stats mantelhaen test x 读完一些书后 我发现
  • 如何从 Cython 调用 C-API 函数,例如 PyUnicode_READ_CHAR?

    我正在使用 Cython 来加速对字符串 unicode CPython 3 6 进行操作的函数 我如何调用 CPythonPy UCS4 val PyUnicode READ CHAR my string my index 来自我的 Cy
  • Android:MaterialButton 覆盖 Style 中的 textColor

    我想定义一个替代按钮样式 使用我的辅助颜色作为背景和 colorOnSecondary分别为文本 但我正在努力获取样式中定义的 textColor MaterialButton 使用 私有 选择器绘制作为 textColor 它使用 col
  • Win32 下的堆损坏;如何定位?

    我正在研究一个多线程正在损坏堆的 C 应用程序 定位这种损坏的常用工具似乎不适用 源代码的旧版本 18 个月前 表现出与最新版本相同的行为 因此这种情况已经存在很长时间了 只是没有引起注意 不利的一面是 源增量不能用于识别错误何时引入 有a
  • 如何实现SpriteKit定时器?

    我目前正在尝试为我的精灵套件游戏实现一个计时器 但我没有让它工作 定时器的初始值始终保持不变 我假设我需要以某种方式 某处更新标签 但我不知道如何以及在哪里 我不明白这一点 有任何想法吗 这是我的 GameScene 类中的代码 let l