cocos creator ScrollView组件scrollToOffset()方法的使用

Posted lyc10

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cocos creator ScrollView组件scrollToOffset()方法的使用相关的知识,希望对你有一定的参考价值。

前言

之前想用scrollToOffset()在打开界面时,滑动窗口滑动到一个相对应的位置,但是使用scrollToOffset()这个方法的时候,没起作用。然后就用了其他方法来实现相同的效果。现在有时间,就去一探究竟当时为什么使用scrollToOffset()方法会失败。

终究找到原因还是花了一番时间。

 1     scrollToOffset: function(offset, timeInSecond, attenuated) 
 2         var maxScrollOffset = this.getMaxScrollOffset();
 3 
 4         var anchor = cc.p(0, 0);
 5         //if maxScrollOffset is 0, then always align the content‘s top left origin to the top left corner of its parent
 6         if (maxScrollOffset.x === 0) 
 7             anchor.x = 0;
 8          else 
 9             anchor.x = offset.x / maxScrollOffset.x;
10         
11 
12         if (maxScrollOffset.y === 0) 
13             anchor.y = 1;
14          else 
15             anchor.y = (maxScrollOffset.y - offset.y ) / maxScrollOffset.y;
16         
17 
18         this.scrollTo(anchor, timeInSecond, attenuated);
19     ,

打印下

var maxScrollOffset = this.getMaxScrollOffset();

发现值为 cc.p(0, 0), 为什么会是 0 呢? 接着看:

 1     getMaxScrollOffset: function() 
 2         var scrollSize = this.node.getContentSize();
 3         var contentSize = this.content.getContentSize();
 4         var horizontalMaximizeOffset =  contentSize.width - scrollSize.width;
 5         var verticalMaximizeOffset = contentSize.height - scrollSize.height;
 6         horizontalMaximizeOffset = horizontalMaximizeOffset >= 0 ? horizontalMaximizeOffset : 0;
 7         verticalMaximizeOffset = verticalMaximizeOffset >=0 ? verticalMaximizeOffset : 0;
 8 
 9         return cc.p(horizontalMaximizeOffset, verticalMaximizeOffset);
10     ,
 6         horizontalMaximizeOffset = horizontalMaximizeOffset >= 0 ? horizontalMaximizeOffset : 0;
 7         verticalMaximizeOffset = verticalMaximizeOffset >=0 ? verticalMaximizeOffset : 0;

所以主要的原因scrollToOffset()是因为 content节点的 width, height , 小于 或 等于 ScrollView组件所在节点的width ,height。

 

 



 

以上是关于cocos creator ScrollView组件scrollToOffset()方法的使用的主要内容,如果未能解决你的问题,请参考以下文章

cocos creator 的scorllview 的滑动事件和触摸事件会产生冲突么

cocoscreator模拟器怎么触摸

CCVirtualGridList - Cocos Creator 虚拟列表

cocos creator图集资源Atlas的创建与引用

Cocos Creator 资源管理AssetManager

Cocos Creator3【Cocos引擎常用的自执行函数】