【问题标题】:Is the addChild method done synchronously or asynchronously?addChild 方法是同步完成还是异步完成?
【发布时间】:2015-02-21 05:45:00
【问题描述】:

我有一个 SpriteKit 游戏,我在 SKScene 的更新方法期间检查我的 sknodes 是否有父节点(通过检查它们的父属性是否为 nil)。如果它们没有父节点,那么我知道将它们添加到 SKScene。

我担心如果 addChild 方法是异步完成的,那么 SKScene 可能会在一个特定的更新帧上开始 addChild 方法,但它可能不会在下一个更新帧上用该方法完成。因此,当它在下一个更新帧检查同一个节点的父属性时,它仍然是 nil,因此 SKScene 将尝试再次添加同一个节点。

如果发生这种情况,程序可能会失败,因为将同一节点两次添加到 SKScene 会导致错误。

当然,如果 addChild 是同步完成的,那么我不必担心会发生这种情况。

那么有谁知道 addChild 是同步完成还是异步完成?还是我只是想得太远了,这没什么好担心的?

【问题讨论】:

  • 回答你的问题:据我所知是同步的。是的。您也可以轻松地自己验证,添加一个孩子并立即检查 children.count

标签: objective-c asynchronous sprite-kit sknode


【解决方案1】:

不,该方法是同步的,唯一的“异步外观”就是绘图。由于绘图只发生在“runloop 迭代之间”,因此 addChild 的可见效果可以被视为“延迟”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    • 2015-06-09
    • 2020-09-24
    • 2019-10-19
    • 2014-08-09
    • 2013-02-15
    相关资源
    最近更新 更多