zoukankan      html  css  js  c++  java
  • 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。

     



  • 相关阅读:
    String类之indexOf--->查找某字对应的位置
    5、文件过滤器
    String类之endsWith方法--->检测该字符串以xx为结尾
    for循环
    java-成员方法/变量、类方法/变量等区别
    4、File类之获取方法
    3、File类之创建、删除、重命名、判断方法
    2、创建File类对象
    Java 实现Redis客户端,服务端
    Phoenix踩坑填坑记录
  • 原文地址:https://www.cnblogs.com/lyc10/p/11379348.html
Copyright © 2011-2022 走看看