1
scheduleUpdate後,更新:(ccTime)dt將被調用每秒60次,如果一次更新方法的運行時間超過1/60秒,該怎麼辦?下一次通話將被取消?如果由scheduleUpdate計劃的更新方法在cocos2d-iphone中運行時間過長,該怎麼辦?
scheduleUpdate後,更新:(ccTime)dt將被調用每秒60次,如果一次更新方法的運行時間超過1/60秒,該怎麼辦?下一次通話將被取消?如果由scheduleUpdate計劃的更新方法在cocos2d-iphone中運行時間過長,該怎麼辦?
幀率下降。什麼都不會被取消。
在60 fps時,對於cocos2d和您的代碼來說,處理所有渲染幀所需的所有內容(包括所有OpenGL繪圖操作)的準確率只有1/60秒。這完全是0.016666666秒。
如果一個更新週期花費比這更長的時間,下一幀將在0.03333333秒後呈現,而如果多幀連續花費更長時間處理,則將幀速率降至30幀/秒。假設在這段時間內所有的事情都完成了,否則下一幀更新將被推遲到0.05秒甚至0.06666666秒。
您只能使用cocos2d獲得60,30,20或15 fps的幀速率,因爲它使用了CADisplayLink,它使刷新率與屏幕刷新率同步。 cocos2d中的幀速率計數器可能會顯示40 fps或其他值,因爲它在多個幀上平均。
這是我讀過的關於Cocos2D幀率下降的最好解釋。很有幫助。 – Sylvan
@ LearnCocos2D謝謝!但是,在一個更新週期中,我的預定函數和OpenGL繪圖操作的執行順序是什麼?如果調用用戶輸入相關函數(例如onTouchXXX委託方法),它們是否也在更新週期內在同一線程中運行,並且執行順序是什麼? –