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。

     



  • 相关阅读:
    C#委托及事件 详解(讲得比较透彻)
    浅谈前端常用脚手架cli工具及案例
    C++实现二分法详解
    重新整理 .net core 实践篇————重定向攻击[三十九]
    动态规划_备忘录法_矩阵链乘问题
    完了,又火一个项目
    DOM常用的属性和方法
    一些胡乱的吐槽
    Mac安装compass失败的原因
    css动画animation-keyframes
  • 原文地址:https://www.cnblogs.com/lyc10/p/11379348.html
Copyright © 2011-2022 走看看