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。

 

 



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM