cocos2dx:3.4, cocos:2.1.5
本来想调用PageView的scrollToPage来设置默认页的,但发现PageView如果过早调用scrollToPage函数(比如在刚刚初始化完PageView,或者刚刚读取完csb),会出现页面偏移现象(除了索引为0的Page)。
原因分析如下,前提是刚初始化完PageView,而且里面已经有Page:
1、调用scrollToPage会设置了当前页的索引(_curPageIdx)
2、PageView还没开始调用doLayout(在drawScene里调用, doLayout要完成3项工作:更新所有页面位置,更新所有页面大小,更新边界页)
3、此时PageView已经开始Update,而且Update先于drawScene
4、PageVew在Update的autoScroll里开始更新每个Page的位置,_autoScrollDistance已经开始减少,但是边界也还没初始化,页面不动(出错1)
5、由于drawScene里面调用了doLayout,dolayout先开始它的3项工作,由于第一步的时候已经设置了_curPageIdx,所以第一项工作的时候,已经把页面位置更新到当前索引页位置(出错2)
6、由于autoScrollDistance还没为0,后续的Update中都是在第5步的页面位置上进行update,位置已经不正确了
不知道能不能提供一个像ScrollView一样的,Jump函数