cocos2dx中的時序問題的分析

    今天遇到一個問題,對於UIListView,在初始化(pushBackCustomItem)之後,如果立即操作的話,由於原件並未重新佈局,因此會導致一些奇奇怪怪的問題。查看代碼之後,發現doLayout和forceDoLayout可以實現重新佈局,而調用者是visit函數。

    於是乎,在初始化ListView之後,立即使用visit,再進行listView的操作,就不會出現問題了。不過有一點需要注意的是:在OnEnter的時候,也會調用visit,也就是說實際上visit不止一次。如果第一次visit和第二次visit得到的結果一樣,即都是正確的結果的話,那就沒有什麼問題。否則在手動visit之後,得到的是錯誤結果,那手動調用這個visit就沒有什麼用。另外一個問題是,在visit之後,如果進行同步操作,沒啥問題。如果進行延時操作,如果在延時結束之前,進行了ListView的items的改變,那會重新DoLayout,一些參數會改變,那接下來的延時操作會偏離原來的設定,出現問題。

如果visit不可用的話,那就必須提供一個通知完全加載(即visit)之後的一個回調,通知可以進行下一步操作,否則就根本不可能做到在加載重新計算完成後做一些操作這樣的時序。然後並沒有這樣的回調,所以只能用visit。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章