标签:else div 一个 time cocos second contents 打印 node
前言
之前想用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()方法的使用
标签:else div 一个 time cocos second contents 打印 node
原文地址:https://www.cnblogs.com/lyc10/p/11379348.html