我的應用使用圖像和文本替換SceneKit
內容的「頁面」。當我從圖像頁面前進到新的SceneKit
頁面時,先前的SceneKit
頁面中的內容在被新內容替換之前會短暫顯示。質樸。之前SceneKit內容的閃爍
我只使用一個SCNScene
和一個SCNView
。當我轉換到圖像類型頁面時,我隱藏了SCNView
。要恢復新SceneKit
顯示我:
- 刪除所有來自文件
- 從
rootNode
- 負荷新節點圖節點添加新節點圖的
rootNode
- 取消隱藏
SCNView
很明顯,這個隱藏是異步的,我看到了新的場景的剩餘部分,而新的場景正在建立。我和AVPlayer
也有類似的問題。
在過去的應用程序中,我遇到了與MPMoviePlayer
相同的問題,並通過在電影視圖上顯示空白視圖並隱藏該通知指出當前電影已加載來解決該問題。也許我可以用相同的方式處理AVPlayer
問題,但我不認爲這適用於SceneKit
。即使在AVPlayer
的情況下,如果可能的話,我想要一個更好的方法來處理這個問題。
edit_1:我試過Hal的交換了SCNScenes
的想法,但仍然得到了暫時的殘留圖像。我試過使用兩個SCNViews
,並交替地將它們交換出來。在退出當前場景之前,我也嘗試將相機移動過可見元素。 prepareObjects:withCompletion handler
什麼也沒做。
看起來,它不是節點,也不是SCNScene
,它是持久的,而是場景的渲染圖像。如上所述,通過觀看電影播放器的這種效果也支持了這一點。
edit_2:我嘗試了一個掩碼,但是像所有其他嘗試失敗一樣。我使用SCNAction
將屏幕移出屏幕加上一個完成處理程序,以確保只在之後才進行更改,我確實取得了「成功」。但是,這會將加載時間延長大約800%!最好有醜陋的「閃光燈」。
看起來你似乎太努力了。你爲什麼不使用視圖的'scene'屬性來設置你的內容的新場景,或者使用'presentScene(withTransition:incomingPointOfView:completionHandler :)'?'prepareObject(:shouldAbortBlock)'也值得一看。 –
我會重新討論操作場景,我對於不斷重新添加攝像頭,燈光等可能造成的開銷猶豫不決,但我想他們對我使用的一些模型表現出色。我正在避免你提到的方法,我希望與iOS 8兼容。 – bpedit
我得到相同的問題交換場景。我不認爲這個問題與在'SceneKit'中工作的特別相關,這也體現在'AVPlayer'和'MPMoviePlayer'上。由於你的'presentScene ...'指針,我看到了一個'prepareObjects:withCompletion處理程序',我會嘗試。 – bpedit