【Cocos新手进阶】父级预制体中的数据列表,在子预制体中的控制方法!

本篇文章主要讲解,cocos中在预制体操作过程中,父级预制体生成的数据列表中,绑定了子预制体中的事件,在子预制体的时间中如何控制上级列表的具体操作教程。
日期:2023年11月10日
作者:任聪聪

一、实际效果情况

在这里插入图片描述

说明:预制体弹出框中的预制体item,给予item预制体的文本绑定点击事件,点击后即可传递数据到父级home脚本中进行更新。

二、制作父级预制体及子预制体

步骤一、创建空节点,如下图

在这里插入图片描述

步骤二、创建名为“popup_list” 的节点及背景图如下图。

在这里插入图片描述
注意:点击修改所有的信息如图红框内所示。

步骤三、创建滚动窗

在这里插入图片描述
创建后,名称改为ScrollView:
在这里插入图片描述

步骤四、将item设置为预制体

注意:记得解锁左侧的红色小锁,点击一下就可以。
在这里插入图片描述
设置完毕:
在这里插入图片描述
创建对应的预制体脚本,如下图,item.ts:
在这里插入图片描述

步骤五、创建home场景,及home脚本并将上述的弹出界面存到里面

在这里插入图片描述
说明:点击保存即可进行配置,优先创建空的home,然后保存到home的fire界面。

创建home脚本,并声明预制体及父节点信息,如下内容:
home.ts

import item from "./prefab/item";const {ccclass, property} = cc._decorator;@ccclass
export default class home extends cc.Component {@property({type: cc.Node,displayName: "预制体父节点"})protected prefabFatherNode: cc.Node = null;@property({type: cc.Prefab,displayName: "item预制体"})protected itemPrefab: cc.Prefab = null;protected preData: Array<{ title: string,id:number,bg_color:string}> = [];onLoad() {this.node.on('up_list', this.onListUpdate, this);this.echoList();}//监听更新protected onListUpdate(data: any): void {console.log('父节点回收到的数据:', data.detail);this.echoList(data.detail.id);}//输出列表echoList(theId=0){let that = this;let temporaryData = null;let num = 0;for (let i = 0; i < 60; i++) {temporaryData = {title: "",id: 0,bg_color: "#000000",};const id = ++num;temporaryData.title = `${id}`;temporaryData.id = id;that.preData.push(temporaryData);}console.log(that.preData);if (theId !== 0) {// 更新预制体let prefabChildren = that.prefabFatherNode.children;for (let i = 0; i < prefabChildren.length; i++) {let prefabChild = prefabChildren[i];let itemComponent = prefabChild.getComponent(item);//that.preData 会记录上一次的修改,所以要进行颜色的还原that.preData[i].bg_color = "#000000";if (itemComponent && itemComponent.getData().id === theId) {that.preData[i].bg_color = "#C0331F";}itemComponent.updatePre(that.preData[i]);}} else {// 创建新的预制体let length = that.preData.length;for (let i = 0; i < length; i++) {let prefabricatedObject = cc.instantiate(that.itemPrefab);prefabricatedObject.parent = that.prefabFatherNode;prefabricatedObject.getComponent(item).createdPre(that.preData[i]);}}}// update (dt) {}
}

配置content属性:

在这里插入图片描述
给home.ts绑定脚本:
在这里插入图片描述
拖拽关联预制体和父节点:
在这里插入图片描述

步骤六、创建预制体并绑定脚本

点击打开预制体:
在这里插入图片描述
点选预制体场景信息后,在左侧进行用户脚本的关联如下图:
在这里插入图片描述
说明:选择item。

配置item.ts的脚本内容:

const {ccclass, property} = cc._decorator;@ccclass
export default class item extends cc.Component {@property(cc.Label)label: cc.Label = null;private data: any = null; // 保存预制体的数据//点击事件监听 回调到home脚本protected onClick(theId): void {console.log("点击测试");let newData = {'id':theId}; let customEvent = new cc.Event.EventCustom('up_list', true);customEvent.detail = newData;//自定义的数据调用处this.node.dispatchEvent(customEvent);//亲测有效的方式,使用this.node.parent.emit("xxxx",{[]});没有反应}/*** 初始化* @param data */createdPre(data: { title: string,id:number,bg_color:string }) {let that = this;that.data =data;console.log(data);that.label.string = "我是第:"+data.title+"个,预制体。";that.label.node.color = new cc.Color().fromHEX(data.bg_color);//给label 注册事件监听that.node.on(cc.Node.EventType.TOUCH_END,function(){const theId = data.id;//获取当前的id并返回,用于更新数据that.onClick(theId);})}//更新预制体updatePre(data: any) {this.data = data;this.label.string =  "我是第:"+data.title+"个,预制体。";this.label.node.color = new cc.Color().fromHEX(data.bg_color);}//返回当前预制体的数据getData(): any {return this.data;}}

关联对象信息,拖拽到指定的框即可:
在这里插入图片描述
end:大功告成,运行进行测试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/186619.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springcloud二手交易平台系统源码

开发技术&#xff1a; 大等于jdk1.8&#xff0c;大于mysql5.5&#xff0c;idea&#xff08;eclipse&#xff09;&#xff0c;nodejs&#xff0c;vscode&#xff08;webstorm&#xff09; springcloud springboot mybatis vue elementui mysql 功能介绍&#xff1a; 用户端&…

openvino学习(一)ubuntu20.04安装openvino2022

安装openvino2022要求 操作系统 Ubuntu 18.04 长期支持 (LTS)&#xff0c;64 位 Ubuntu 20.04 长期支持 (LTS)&#xff0c;64 位 软件 CMake 3.13 或更高版本&#xff0c;64 位 GCC 7.5.0&#xff08;适用于 Ubuntu 18.04&#xff09;或 GCC 9.3.0&#xff08;适用于 Ubunt…

人车实时精准管控!北斗让换流站作业更安全

换流站是高压直流输电系统的核心组成部分&#xff0c;对促进电网稳定运行、保障电力行业的可持续发展有着重要作用。长期以来&#xff0c;随着电网主变改扩建设工程的开展&#xff0c;站内作业人员安全管控压力随之增大&#xff0c;仅依靠传统的“人盯人”和“自主”管控模式较…

掌握互联网的未来:5G时代的新机遇

随着5G技术的快速发展&#xff0c;我们正步入一个全新的互联网时代。5G不仅仅是速度的飞跃&#xff0c;它还代表着无限的可能性和前所未有的创新机遇。本文将探讨5G如何重新定义互联网&#xff0c;并为您提供洞察如何抓住这波科技浪潮。 5G技术的核心优势 超高速度&#xff1a…

火力全开!腾讯云这次直接开卖5年

如果你是一名网站管理员&#xff0c;或者是一名创业公司的CEO&#xff0c;那么腾讯云这个词一定不会陌生。作为国内领先的云计算服务提供商&#xff0c;腾讯云一直以来都在为各行各业的用户提供着高效、稳定、安全的云计算服务。 而在今天&#xff0c;我们要给大家带来一个重磅…

视频剪辑方法:为视频剪辑添加亮点,如何制作精美的滚动字幕

在视频剪辑中&#xff0c;滚动字幕是一个重要的元素&#xff0c;它可以为视频增添视觉吸引力&#xff0c;增强观看体验。滚动字幕的长度和速度也是非常重要的因素。如果滚动字幕太长&#xff0c;会让人感到拖沓&#xff1b;如果滚动字幕太短&#xff0c;会让人感到匆忙。因此&a…

“探秘!根据关键词搜索商品列表的虾皮API大揭露!“

要使用虾皮API根据关键词获取商品列表&#xff0c;您需要使用虾皮API的搜索功能。以下是使用Python和虾皮API根据关键词获取商品列表的基本步骤&#xff1a; 注册虾皮API账号并获取API凭证&#xff08;访问虾皮开放平台并创建应用以获取API凭证&#xff09;。安装必要的Python…

6、规划绩效域

1、变更 &#xff08;1&#xff09;变更有哪几种原因&#xff08;类型&#xff09;&#xff1f; 纠正措施&#xff08;比如进度落后了&#xff0c;我们会有赶工和快速跟进的措施&#xff09; 缺陷补救 预防措施 更新措施 2、变更的目的和变更控制流程的意义 考点1&#…

软文发布如何选择对应的媒体

企业做软文推广第一步&#xff0c;就是选择合适的媒体进行投放&#xff0c;然而许多企业不知道如何选择合适的媒体导致推广工作十分被动&#xff0c;无法取得效果&#xff0c;今天媒介盒子就来和大家分享&#xff0c;企业应该如何选择对应的媒体。 一、 媒体类型 根据软文类型…

力扣每日一道系列 --- LeetCode 88. 合并两个有序数组

&#x1f4f7; 江池俊&#xff1a; 个人主页 &#x1f525;个人专栏&#xff1a; ✅数据结构探索 ✅LeetCode每日一道 &#x1f305; 有航道的人&#xff0c;再渺小也不会迷途。 文章目录 思路1&#xff1a;暴力求解思路2&#xff1a;原地合并 LeetCode 88. 合并两个有序数组…

在vue中如果头像为空时用姓名第一个字当头像

业务场景:当个人资料或者用户头像没有图片时&#xff0c;默认使用户名字中第一个汉字做头像。 效果图&#xff1a; 完整代码&#xff1a; <el-avatarsize"large" style"width: 45px; height: 45px; line-height: 45px; font-size: 24px"v-if"…

酷开科技智能大屏OS Coolita亮相第134届中国进出口商品交易会

作为中国外贸的“风向标”和“晴雨表”&#xff0c;广交会因其历史长、规模大、商品种类全、到会客商多、成交效果好&#xff0c;被称为“中国第一展”&#xff0c;它见证了中国改革开放的时代大潮与对外贸易的蓬勃发展。 2023年10月15日&#xff0c;第134届中国进出口商品交易…

财税服务展示预约小程序的作用是什么

财税财政往往困扰着很多公司&#xff0c;尤其是公司里没有相应职员或工作压力大的情况下&#xff0c;不少商家就会寻找代理记账、审计服务、会计代理等服务的机构。 对财政服务代理机构&#xff08;会计公司&#xff09;来说&#xff0c;市场企业多而广&#xff0c;理论上来说…

获取小程序页面路径完整流程

应用场景&#xff1a;因为所涉及的功能要跳转到滴滴打车小程序的代驾页面&#xff0c;而我并不知道他的appid和对应的页面路径&#xff0c;所以跟着我的步骤走下&#xff0c;这里拿滴滴打车小程序举例。 现在的话我们是拿到了小程序对应的appid了&#xff0c;接下来就去获取小程…

k8s存储卷 PV和PVC

目录 emptyDir存储卷 hostPath存储卷 nfs共享存储卷 PVC 和 PV 生命周期 一个PV从创建到销毁的具体流程如下&#xff1a; 静态pvc 动态pvc 3、定义PVC 4、测试访问 搭建 StorageClass NFS&#xff0c;实现 NFS 的动态 PV 创建 1、在stor01节点上安装nfs&#xff0…

一种优雅的调用第三方接口的思路及实现

之前的项目调用第三方接口时&#xff0c;往往用HttpUtils类似的静态方法调用。比较丑&#xff0c;不通用。如下&#xff0c;这是截取项目中某人调用的一段代码&#xff0c;非常不雅&#xff1a; 经改进后&#xff0c;采用了动态代理技术来实现&#xff0c;效果如下&#xff1a…

Presto资源管理之Resource Groups And Selector

文章目录 前言资源组配置选择器规则 Selector Rules全局配置 Global Properties选择器属性配置案例配置 prestoDb 前言 资源组对资源使用进行限制&#xff0c;并可以对在其中运行的查询执行队列策略&#xff0c;或将资源分配给子组。查询属于单个资源组&#xff0c;并且从该组…

android开发布局知识

插件开发的视频笔记&#xff1a;

宝塔部署QQ机器人,提示OpenSSL 1.0.2k-fips 26 Jan 2017

1、报错预览 Traceback (most recent call last):File "/www/wwwroot/python/bot-one/main.py", line 5, in <module>import requestsFile "/www/wwwroot/python/bot-one/343ae0eb0d491a10a1a00c0621b03ed0_venv/lib/python3.9/site-packages/requests/_…

投票助手图文音视频礼物打赏流量主小程序开源版开发

投票助手图文音视频礼物打赏流量主小程序开源版开发 图文投票&#xff1a;用户可以发布图文投票&#xff0c;选择相应的选项进行投票。 音视频投票&#xff1a;用户可以发布音视频投票&#xff0c;观看音视频后选择相应的选项进行投票。 礼物打赏&#xff1a;用户可以在投票过…