我有一個由按鈕觸發的SCNNodes
動畫。在隨後按下按鈕時,動畫反轉。前進動畫總是可以正常工作,但反向動畫有時會掛起。也就是說,它將播放完成處理程序之前的部分然後凍結。但是,當我應用我的三種手勢(平移,平移,縮放)中的任何一種時,它都會掛起並完成處理程序部分。相關代碼:SCNAction完成處理程序等待手勢執行
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()
調用。
據我所知,'runAction()'只作用於單個節點。我的處理程序在4個不同的對象上執行操作,因此分組將無法工作。類似的情況使用'SCNAction.sequence()'。一旦第一對同時動作完成,我需要同時運行處理程序中的所有對象,不同的對象。我錯過了什麼嗎? (順便說一句,原子和債券保持分開是有原因的。)謝謝,哈爾。 – bpedit