最近有这样的需求,折腾了许久,在此把一些问题和解决方法写出来,欢迎大家指正,如有更好的建议记得留言哦~
使用背景: 每次结算时把当前所玩的关卡节点显示在scrollView 的最中间
思路: 移动content的位置
scrollView 滑动的原理:
所有显示的内容节点 都是 content 的子节点,view 控制显示区域的大小,通过content的位置变化,显示出不同部分的内容
方法:
- 根据每个item的宽 itemWigth,计算出显示某个item时 content 的坐标
- 使用:setContentPosition: 设置当前视图内容的坐标点
scrollview.setContentPosition( position );
3.调整content 和 item的canvas :
我是把 x 都设置为0, 这样只需要在初始化后找到 content的起始位置startPos , 再设置位置为 startPos - n*itemWigth就可以了
var pos = this.scrollView.getContentPosition();
this.startPos = pos.x;
var offset = cc.v2((this.startPos-(this.initNum-1) * this.itemWidth),pos.y) ;
this.scrollView.setContentPosition(offset);
到此成功实现
问题: 开始查阅网上很多资料,让用scrollToOffset(), 我设置了偏移量,也延迟到下一帧执行了,但就是不起作用 。。。不知道为什么,还请前辈指点
scrollToOffset: content 在规定时间内将滚动到 ScrollView 相对左上角原点的偏移位置
使用:
scrollView.scrollToOffset(cc.v2(x,y));
更多推荐
cocos creator 学习: 设置scrollView 中content的偏移位置
发布评论