swift - 如何更新 var in did move to view,在 did move to view 之外快速查看

标签 swift swift3 sprite-kit

我试图在每次更改时随机更新“override func didMove(to view: SKView) {”中的 Sprite ,但它始终保持在恒定时间。

var randomTime = 1.9
let spritestater = SKSpriteNode(imageNamed: "spritea1.png")
let sprite1 = SKAction.setTexture(SKTexture(imageNamed:"spritea1.png"))
let sprite2 = SKAction.setTexture(SKTexture(imageNamed: "sprite1b.png"))

 override func didMove(to view: SKView) {
    spritestater.scale(to: self.frame.size)
    spritestater.anchorPoint = CGPoint(x: 1, y: 1)
    spritestater.zPosition = 1
    spritestater.position = CGPoint(x: self.frame.maxX, y: self.frame.maxY)
    addChild(spritestater)

    let anamatesprite = SKAction.repeatForever(SKAction.sequence(
        [sprite1,
        SKAction.wait(forDuration: TimeInterval(randomTime)),
        sprite2,
        SKAction.wait(forDuration: 0.3),
        ]))
    spritestater.run(anamatesprite)
 }

 override func update(_ currentTime: TimeInterval) {
    randomTime = Double(arc4random_uniform(UInt32(4.5)))
 }

最佳答案

对于初学者来说,您的操作已经在运行,更改 randomTime 的值不会影响已经在运行的操作。 didMove(to view:) 也只会在页面最初加载时被调用,因此里面的 Action 将永远不会再次运行。

我向您展示的是一种糟糕的运行方式,但它会向您展示 randomTime 将更改并在新时间运行操作

override func didMove(to view: SKView) {
    spritestater.scale(to: self.frame.size)
    spritestater.anchorPoint = CGPoint(x: 1, y: 1)
    spritestater.zPosition = 1
    spritestater.position = CGPoint(x: self.frame.maxX, y: self.frame.maxY)
    addChild(spritestater)

    runActionOnSprite()
}

func runActionOnSprite() {
    let anamatesprite = SKAction.repeatForever(SKAction.sequence(
    [sprite1,
    SKAction.wait(forDuration: TimeInterval(randomTime)),
    sprite2,
    SKAction.wait(forDuration: 0.3),
    ]))
    spritestater.run(anamatesprite)
}

override func update(_ currentTime: TimeInterval) {
    if !spritestater.hasActions()
        randomTime = Double(arc4random_uniform(UInt32(4.5)))
    }
}

关于swift - 如何更新 var in did move to view,在 did move to view 之外快速查看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42817187/

相关文章:

swift - 绘制多个圆 SpriteKit

ios - 如何在 tableView 中编辑行并保存 coreData 中的更改?

ios - Dropbox usersGetCurrentAccount 无成员编译错误

ios - 更改在 for 循环中创建的 UIView 的属性

ios - 在 tableview 单元格中使用 KVO 跟踪对 Swift 3 中类实例的特定属性的更改

ios - 在 Swift 中的代码中向 iOS 应用程序添加启动屏幕(没有 Storyboard或启动板)

swift - 向 map View 添加注释时出错

ios - 仅从 firebase 检索字符串值

ios - 如何检测数字是递减还是递增? iOS

objective-c - SpriteKit enumerateChildNodesWithName 高级搜索?