cocos2dx中的时序问题的分析

    今天遇到一个问题,对于UIListView,在初始化(pushBackCustomItem)之后,如果立即操作的话,由于原件并未重新布局,因此会导致一些奇奇怪怪的问题。查看代码之后,发现doLayout和forceDoLayout可以实现重新布局,而调用者是visit函数。

    于是乎,在初始化ListView之后,立即使用visit,再进行listView的操作,就不会出现问题了。不过有一点需要注意的是:在OnEnter的时候,也会调用visit,也就是说实际上visit不止一次。如果第一次visit和第二次visit得到的结果一样,即都是正确的结果的话,那就没有什么问题。否则在手动visit之后,得到的是错误结果,那手动调用这个visit就没有什么用。另外一个问题是,在visit之后,如果进行同步操作,没啥问题。如果进行延时操作,如果在延时结束之前,进行了ListView的items的改变,那会重新DoLayout,一些参数会改变,那接下来的延时操作会偏离原来的设定,出现问题。

如果visit不可用的话,那就必须提供一个通知完全加载(即visit)之后的一个回调,通知可以进行下一步操作,否则就根本不可能做到在加载重新计算完成后做一些操作这样的时序。然后并没有这样的回调,所以只能用visit。


本文出自 “山重水复” 博客,谢绝转载!

你可能感兴趣的:(cocos2dx,visit,时序,UIListView)