文档章节

cocos creator ScrollView组件scrollToOffset()方法的使用

o
 osc_g8254g7s
发布于 2019/08/19 20:11
字数 292
阅读 12
收藏 0

精选30+云产品,助力企业轻松上云!>>>

前言

之前想用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。

 

 



 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
教你使用Cocos Creator制作国旗头像生成器,附源码!

关注「编程小王子」公众号回复【头像生成器】获得源码! 下面我重点介绍一下Cocos Creator H5头像生成的实现方法: 获取手机相册图片 在 Cocos Creator 中加载相册图片 Cocos Creator 屏幕截...

张晓衡
2019/09/26
0
0
【激励视频组件】零编程,即拖即用,妈妈再也不用担心小游戏 SDK 接入了!

视频地址: https://mp.weixin.qq.com/s/CESs6saKGB828PCYPXbiRQ 我们社区公众号上的伙伴越来越多,结识到一些有见识、有资源、有流量的客户。 但是,他们不会游戏开发!!! 其中又要分为几...

张晓衡
05/25
0
0
【激励视频组件】零编程,即拖即用,妈妈再也不用担心小游戏 SDK 接入了!

视频地址: https://mp.weixin.qq.com/s/CESs6saKGB828PCYPXbiRQ 我们社区公众号上的伙伴越来越多,结识到一些有见识、有资源、有流量的客户。 但是,他们不会游戏开发!!! 其中又要分为几...

张晓衡
05/25
0
0
【激励视频组件】零编程,即拖即用,妈妈再也不用担心小游戏 SDK 接入了!

视频地址:https://mp.weixin.qq.com/s/CESs6saKGB828PCYPXbiRQ 我们社区公众号上的伙伴越来越多,结识到一些有见识、有资源、有流量的客户。但是,他们不会游戏开发!!! 其中又要分为几类...

张晓衡
05/25
26
0
【激励视频组件】零编程,即拖即用,妈妈再也不用担心小游戏 SDK 接入了!

视频地址: https://mp.weixin.qq.com/s/CESs6saKGB828PCYPXbiRQ 我们社区公众号上的伙伴越来越多,结识到一些有见识、有资源、有流量的客户。 但是,他们不会游戏开发!!! 其中又要分为几...

osc_47pscir3
05/26
2
0

没有更多内容

加载失败,请刷新页面

加载更多

设计模式(4) 建造者模式

什么是建造者模式 经典建造者模式的优缺点 对建造者模式的扩展 什么是建造者模式 建造者模式将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。创建者模式隐藏了...

zhixin9001
30分钟前
14
0
ArrayList源码分析 —— JDK8

ArrayList的特性 ArrayList内部使用数据作为存储结构,ArrayList可以理解为数组的扩展对象,封装了常用的和非常用的操作数组的方法。以及当数组长度不足以保存数组时,自动扩容数组,通常Arr...

XuePeng77
36分钟前
40
0
__slots__的用法? - Usage of __slots__?

问题: Python中__slots__的目的是什么-尤其是关于何时以及何时不使用它的目的? 解决方案: 参考一: https://stackoom.com/question/1ymu/slots-的用法 参考二: https://oldbug.net/q/1ym...

富含淀粉
47分钟前
17
0
Python分析42年高考数据,告诉你高考为什么这么难?

作者:徐麟 历年录取率 可能很多经历过高考的人都不知道高考的全称,高考实际上是普通高等学校招生全国统一考试的简称。从1977年国家恢复高考制度至今,高考经历了许多的改革,其中最为显著的...

爱码小哥
49分钟前
27
0
CKEditor 5 + SpringBoot实战(四):SpringBoot 实现文件上传

在本系列的文章中,我将介绍如何在Spring Boot Application中使用CKEditor编辑器。介绍的内容包括基本环境的搭建,文件上传,SpringData JPA数据持久化,CKEditor5的安装,CKEditor图片上传,...

树下魅狐
51分钟前
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部