cocos creator + TypeScript 解决ScrollView加载大量Item导致卡顿的问题


1、引言

  我们在平常的开发中常常碰到列表类的数据处理!典型的像玩家列表这种可能数量非常庞大,可能有几百个!我们假设一次全部创建可能一下子就导致app安顿崩溃!下面我们带着问题一起分析。

2、问题分析

  点击这里查看上一篇Unity的相关介绍。这里就不再做详细分析了。

3、代码部分
/**
 * 滑动方向枚举
 */
export enum ScrollDirEnum {
    Vertical,
    Horizon
}

const {ccclass, property} = cc._decorator;

@ccclass
export default class UIScrollControl extends cc.Component {


    /** 滑动框体 - UI组件 */
    private scroll_rect:cc.ScrollView

    /** 可见区域大小 */
    private _show_area_size:cc.Size

    /** 滑动方向 */
    private dir:ScrollDirEnum

    /** 总共数量 */
    private total_count:number

    /**实际创建的item数量 */
    private total_show_item_count: number;

    /** 滑动子对象 - 列表 */
    private all_child_list:Array<cc.Node> = new Array<cc.Node>()

    /** item之间的间距 */
    private distance:number = 0

    /** content初始大小 */
    private start_content_size:cc.Size;

    /**标识 */
    private is_start:boolean = false

    private maxIdx:number = 0;

    /** 刷新回调 */
    private refreshCallBack:Function

    /**
     * 初始化控制
     * @param _temp_node 克隆对象
     * @param _total_count 成员总数
     * @param _size Item水平或竖直方向的距离
     * @param _dir 滑动方向
     * @param callBack 刷新回调
     */
    initControl(_temp_node:cc.Node,_total_count:number,_size:cc.Size,_dir:ScrollDirEnum,callBack:Function):void
    {

        if(callBack)
        {
            this.refreshCallBack = callBack
        }
        
        if (this.is_start == false)
        {
            this.scroll_rect = this.node.getComponent(cc.ScrollView);
            if (this.scroll_rect == null || this.scroll_rect.content == null)
            {
                cc.log("ScrollRect组件错误");
                return;
            }

            this.scroll_rect.content.parent.setAnchorPoint(cc.v2(0.5,0.5))
            let _mask_widget:cc.Widget = this.scroll_rect.content.parent.getComponent(cc.Widget)

            if(_mask_widget == null)
            {
                _mask_widget = this.scroll_rect.content.parent.addComponent(cc.Widget)
            }

            //上下左右对齐边界
            _mask_widget.isAlignLeft = true
            
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

对酒当歌﹏✍

您的鼓励是我写作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值