gpt4 book ai didi

swift - 同时运行 2 个 Action ?游戏卡顿?

转载 作者:行者123 更新时间:2023-11-28 13:13:46 25 4
gpt4 key购买 nike

好的,所以我在这里尝试了一些不同的方法,但没有任何效果。我有十几个 Sprite 节点,每个节点都需要:

  1. 等待延迟
  2. 永远重复这个:

一个。向下移动屏幕,同时缩放到更大的尺寸(即这两个同时发生)

然后向上移动屏幕,同时缩小到原始大小(这些也同时发生)

通常我认为这将适用于一个序列并将缩放和移动 Action 分组为 2 个 block ,但它没有奏效。以下命令让节点执行一次:

 block1.runAction(SKAction.runBlock({
self.block1.runAction(moveDownLeft)
self.block1.runAction(scaleBlock)
let nodelay = 0 * Double(NSEC_PER_SEC)
let notime = dispatch_time(DISPATCH_TIME_NOW, Int64(nodelay))
//during delay
dispatch_after(notime, dispatch_get_main_queue()) {
//after delay
self.block1.runAction(moveUpLeft)
self.block1.runAction(scaleBlockBack)
}
})
)

但是当我引入repeatActionForever 时,整个游戏都卡住了。

为什么我不能永远循环现有代码?如何同时运行这 2 个操作?

最佳答案

你遇到的大问题是 block 不等待。它只是运行代码。所以发生的事情是你正在开始它到达 block 末尾的 Action ,并且因为你正在永远重复它即使 Action 没有完成它也会再次调用它。这导致该 block 被尽可能快地调用。

我不完全确定您希望在哪里延迟,但像这样的事情应该会起作用或让您朝着正确的方向开始。

let delay = SKAction.waitForDuration(4.0) //whatever your delay is

let scaleDownGroup = SKAction.group([moveDownLeft, scaleBlock])
let scaleUpGroup = SKAction.group([moveUpLeft, scaleBlockBack])

let sequence = SKAction.sequence([scaleDownGroup, delay, scaleUpGroup])

let repeat = SKAction.repeatActionForever(sequence)

self.block1.runAction(repeat)

希望对您有所帮助。

关于swift - 同时运行 2 个 Action ?游戏卡顿?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30158101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com