ios - 如何更新 waitForDuration 常量?

标签 ios sprite-kit skaction

我有一个闪烁的灯,它使用 SKAction 序列来隐藏和取消隐藏圆形节点。我希望能够根据两个按钮更改它闪烁的间隔。我声明了一个变量 stdTime,并在 TouchBegan 方法中更改了它,但它不起作用。我错过了什么?

我的 didMoveToView:

let blink = SKAction.sequence([
        SKAction.waitForDuration(stdTime),
        SKAction.hide(),
        SKAction.waitForDuration(stdTime),
        SKAction.unhide()])

    let blinkForever = SKAction.repeatActionForever(blink)

    metronome!.runAction(blinkForever)

我的触摸开始:

if upArrow!.containsPoint(location) {
            stdTime = stdTime + 0.1
            println("here: \(stdTime)")
        }

最佳答案

waitForDuration 接受 NSTimeInterval 而不是变量。因此,无论变量在创建时设置为多少时间,它都需要花费时间,并且不会引用回您使用的变量。

根据您正在寻找的结果,这可能会有所帮助。

func startBlink(){
    let blink = SKAction.sequence([
        SKAction.waitForDuration(stdTime),
        SKAction.hide(),
        SKAction.waitForDuration(stdTime),
        SKAction.unhide()])

    let blinkForever = SKAction.repeatActionForever(blink)

    metronome!.removeActionForKey("blink")

    metronome!.runAction(blinkForever, withKey: "blink")
}


if upArrow!.containsPoint(location) {
    stdTime = stdTime + 0.1
    startBlink()
    println("here: \(stdTime)")
}

在不中断序列的情况下,另一种选择是执行类似的操作

func startBlink(){

    let blink = SKAction.sequence([
        SKAction.waitForDuration(stdTime),
        SKAction.hide(),
        SKAction.waitForDuration(stdTime),
        SKAction.unhide(),
        SKAction.runBlock( {
            self.startBlink()
        })])

    metronome?.runAction(blink, withKey: "blink")
}


if upArrow!.containsPoint(location) {
        stdTime = stdTime + 0.1
        println("here: \(stdTime)")
}

并自行递归调用该方法。这样每次到达末尾时都会采用更新的 stdTime。

关于ios - 如何更新 waitForDuration 常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30718284/

相关文章:

ios - Swift iOS 实时对视频应用滤镜?

ios - 让平台连续从左向右移动然后反之亦然的最佳方法是什么?

swift/SpriteKit : Attempting to reach a function/method in a class from another class not working

swift - 如何在 SpriteKit 中创建逼真的纺车

ios - SKAction waitForDuration() 阻塞 SKAction 序列

ios - UIPickerView 上显示问号,而不是 Xcode 10 上的 Realm 数据

objective-c - 继续类中的 get Property 属性与主类不匹配

ios - Swift3:无法删除部分中的行

ios - Spritekit 多节点动画序列器,可以提高性能吗?

swift - SKLabel 不会出现