cocosCreator ScrollView 纵向滚动列表无限循环刷新

2024-04-28 18:18

本文主要是介绍cocosCreator ScrollView 纵向滚动列表无限循环刷新,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

纵向滚动列表无限刷新,横向的稍微修改即可。原理相同。

cc.Class({extends: cc.Component,properties: {itemPref:{type: cc.Prefab,default: null,},mask:{type: cc.Node,default: null,},},// onLoad () {},//只支持纵向。
//只支持纵向。
//只支持纵向。start () {this.itemH = 100; //包括间隙this.itemTotalNum = 8;this.visibleSize = this.mask.getContentSize();this.realItemNum = Math.floor(this.visibleSize.height / this.itemH) + 2;this.itemArr = [];//测试数据this.data = []; for(var i=0; i<17; i++){this.data.push("" + i) ;}this.initItem();},initItem(){var eventHandler = new cc.Component.EventHandler();eventHandler.target = this.node;eventHandler.component = "ScrollHelper";eventHandler.handler = "onScroll";this.scroll_com  = this.getComponent(cc.ScrollView); this.scroll_com.scrollEvents.push((eventHandler)); var totalH = this.itemTotalNum*this.itemH;this.mask.getContentSize()this.scroll_com.content.setContentSize(this.visibleSize.width, totalH);this.initObj();    },initObj(){for(var i=0; i < this.realItemNum; i++){var item = cc.instantiate(this.itemPref);this.scroll_com.content.addChild(item);item.y = -this.itemH/2 - this.itemH*i;this.itemArr.push(item);this.refreshData(i, item)}},onScroll(){this.refresh();},refresh(){this.currOffset = this.scroll_com.getScrollOffset();var start_index = Math.floor(this.currOffset.y / this.itemH);  var isOutMax = this.visibleSize.height + this.currOffset.y > (this.itemTotalNum-1)*this.itemHif (start_index<0 || isOutMax){return;}for(var i=0; i < this.realItemNum; i++){var item = this.itemArr[i];var new_y = -this.itemH/2 - this.itemH*(i + start_index);item.y = new_y; this.refreshData(i + start_index, item) }},//测试数据refreshData(dataIndex, item){var lbl = item.getChildByName("lbl").getComponent(cc.Label);lbl.string = "aa"+dataIndex;}// update (dt) {},
});

 

这篇关于cocosCreator ScrollView 纵向滚动列表无限循环刷新的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/943925

相关文章

通过React实现页面的无限滚动效果

《通过React实现页面的无限滚动效果》今天我们来聊聊无限滚动这个现代Web开发中不可或缺的技术,无论你是刷微博、逛知乎还是看脚本,无限滚动都已经渗透到我们日常的浏览体验中,那么,如何优雅地实现它呢?... 目录1. 早期的解决方案2. 交叉观察者:IntersectionObserver2.1 Inter

Python 常用数据类型详解之字符串、列表、字典操作方法

《Python常用数据类型详解之字符串、列表、字典操作方法》在Python中,字符串、列表和字典是最常用的数据类型,它们在数据处理、程序设计和算法实现中扮演着重要角色,接下来通过本文给大家介绍这三种... 目录一、字符串(String)(一)创建字符串(二)字符串操作1. 字符串连接2. 字符串重复3. 字

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

Python进阶之列表推导式的10个核心技巧

《Python进阶之列表推导式的10个核心技巧》在Python编程中,列表推导式(ListComprehension)是提升代码效率的瑞士军刀,本文将通过真实场景案例,揭示列表推导式的进阶用法,希望对... 目录一、基础语法重构:理解推导式的底层逻辑二、嵌套循环:破解多维数据处理难题三、条件表达式:实现分支

把Python列表中的元素移动到开头的三种方法

《把Python列表中的元素移动到开头的三种方法》在Python编程中,我们经常需要对列表(list)进行操作,有时,我们希望将列表中的某个元素移动到最前面,使其成为第一项,本文给大家介绍了把Pyth... 目录一、查找删除插入法1. 找到元素的索引2. 移除元素3. 插入到列表开头二、使用列表切片(Lis

python中列表应用和扩展性实用详解

《python中列表应用和扩展性实用详解》文章介绍了Python列表的核心特性:有序数据集合,用[]定义,元素类型可不同,支持迭代、循环、切片,可执行增删改查、排序、推导式及嵌套操作,是常用的数据处理... 目录1、列表定义2、格式3、列表是可迭代对象4、列表的常见操作总结1、列表定义是处理一组有序项目的

C++11范围for初始化列表auto decltype详解

《C++11范围for初始化列表autodecltype详解》C++11引入auto类型推导、decltype类型推断、统一列表初始化、范围for循环及智能指针,提升代码简洁性、类型安全与资源管理效... 目录C++11新特性1. 自动类型推导auto1.1 基本语法2. decltype3. 列表初始化3

RabbitMQ消息总线方式刷新配置服务全过程

《RabbitMQ消息总线方式刷新配置服务全过程》SpringCloudBus通过消息总线与MQ实现微服务配置统一刷新,结合GitWebhooks自动触发更新,避免手动重启,提升效率与可靠性,适用于配... 目录前言介绍环境准备代码示例测试验证总结前言介绍在微服务架构中,为了更方便的向微服务实例广播消息,

Python中将嵌套列表扁平化的多种实现方法

《Python中将嵌套列表扁平化的多种实现方法》在Python编程中,我们常常会遇到需要将嵌套列表(即列表中包含列表)转换为一个一维的扁平列表的需求,本文将给大家介绍了多种实现这一目标的方法,需要的朋... 目录python中将嵌套列表扁平化的方法技术背景实现步骤1. 使用嵌套列表推导式2. 使用itert