最近有这样的需求,折腾了许久,在此把一些问题和解决方法写出来,欢迎大家指正,如有更好的建议记得留言哦~

使用背景: 每次结算时把当前所玩的关卡节点显示在scrollView 的最中间

思路: 移动content的位置

     scrollView 滑动的原理: 

         所有显示的内容节点 都是 content 的子节点,view 控制显示区域的大小,通过content的位置变化,显示出不同部分的内容

方法:

  1. 根据每个item的宽 itemWigth,计算出显示某个item时 content 的坐标
  2. 使用: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的偏移位置