【发布时间】:2016-03-11 16:30:42
【问题描述】:
我有一个由按钮触发的SCNNodes 动画。在随后按下按钮时,动画反转。正向动画总是可以正常工作,但反向动画有时会挂断。也就是说,它将播放完成处理程序之前的部分,然后冻结。但是,当我应用我的三个手势(平移、平移、缩放)中的任何一个时,它都会取消挂起并完成处理程序部分。相关代码:
else if buttonToggle_1 == true { buttonToggle_1 = false
let moveWaterBack = SCNAction.moveTo(homePosition_2, duration: 1)
let moveValineBack = SCNAction.moveTo(awayPosition_1, duration: 1)
atomsNode_3.hidden = false
bondsNode_3.hidden = false
hideTransients(true)
atomsNode_3.runAction(moveWaterBack)
bondsNode_3.runAction(moveWaterBack,
completionHandler: {
self.atomsNode_2.runAction(moveValineBack) ;
self.bondsNode_2.runAction(moveValineBack) ;
self.atomsNode_3.removeFromParentNode() ;
self.bondsNode_3.removeFromParentNode() ;
hideTransients(false)
})
}
hideTransients()) 调用取消隐藏五个节点,按名称访问它们。有时完成会挂起,有时不会。但是,如果它在保留在同一页面上的特定会话中挂起,它将继续在后续按钮切换时挂起。我还没有弄清楚任何因果关系。我已将 removeFromParentNode() 调用更改为 hidden = true,这目前正在运行,但让我很紧张。
这里到底会发生什么?
编辑 1:虽然它一直在工作,但我已经看到过几次挂断(在很多次中)使用提到的后一个代码,所以这并不是严格地由于 removeFromParentNode() 调用。
【问题讨论】:
-
我遇到了类似的问题,我在这里报告过:stackoverflow.com/questions/56189836/…
标签: scenekit completionhandler