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。

     



  • 相关阅读:
    Understanding String Table Size in HotSpot
    Java性能优化之JVM GC(垃圾回收机制)
    为什么新生代内存需要有两个Survivor区
    jmap命令详解
    JVM GC 机制与性能优化
    JVM1.6 GC详解
    jstat命令详解
    锁的性能相关
    JAVA AQS源码分析
    kafka的安装 (单机)
  • 原文地址:https://www.cnblogs.com/lyc10/p/11379348.html
Copyright © 2011-2022 走看看