最近用 scroll layer 做一个滚动的视图处理,本来想法是,用set tag来标记一个sprite,然后事件处理的时候再用 getChildByTag把她找出来,但是发现怎么取都是null。后来发现这个地方有2个坑爹之处:
坑一:如果要找 addScrollableChild 添加的child,必须用 getScrollableChildByTag 。
源码里面,scrollableChild 和一般的 child 不一样,scrollableChild 是用内部一个 container 来装的,而一般child是scrollLayer 本身来装的 , 有关 scrollable 的操作都在 container 里面,所以要对应。
坑二:用了getScrollableChild返回还是null,因为要在 addScrollableChild 之后再调用 settag 。
源码里面写的是,在 addScrollalbeChild 的时候,会自动调用 child -> getTag 来获取 tag 然后设置 。 但是这是3.11的源码,公司的版本应该不是这个,我这个版本的应该是直接给tag赋值了默认值。所以要在add之后再调用settag。
至于3.11会不会有这个问题,我只能呵呵。