cocos开发QA

目录

    • TS相关
      • foreach循环中使用return
      • 循环延迟
      • 动态获取类属性
    • Cocos相关
      • 属性检查器添加Enum属性
      • 使用Enum报错 枚举“XXX”用于其声明前
      • 实现不规则点击区域
      • 使用cc.RevoluteJoint的enable激活组件无效
      • 本地存储以及相关问题
      • JSON.stringify(map)返回{}
      • 数据加密
      • 客户端复制文本
      • 使用客户端方法
      • 热更新
      • 'LabelOutline.color' is deprecated. (Please use Label.outlineColor instead.)
      • 音效在浏览器正常播放,在安卓上无法播放
      • 使用AndroidStudio调试
      • 使用editbox设置输入内容
      • 第二次进入界面后注册事件内配置参数变为空了
    • 编辑器相关
      • 引擎升级后,VScode代码不同步
      • 引擎升级后,tsconfig.json报错
    • 其他
      • 删除字体显示“文件已在System”中打开

TS相关

foreach循环中使用return

就是一个简单的循环查找,用了foreach
发现无论查没查到,返回结果都是null

list.forEach(v => {
     if (v.tp == tp) {
         return v;
     }
 });
 return null;

原来一直遗漏了这个知识点:
foreach循环中使用return不会终止循环,只会在当次循环中跳出
其他循环是可以终止的

循环延迟

希望实现的功能是:有两句话,希望第一句话输出之后等一段时间再说第二句话。

就需要将for和setTimeout结合使用
正常setTimeout放到for中获取到的i只会是最终数值,就需要使用立即执行函数进行传递

for (let i = 0; i < lang.content.length; i++) {
    (function (i) {
        setTimeout(function () {
            console.log(i);
        }, 500 * i);
      })(i);
}

动态获取类属性

以前一直是使用this["btn_" + data.type];类似这样动态获取属性,但ts中类型判断导致报错↓
元素隐式具有 “any” 类型,因为类型为 “string” 的表达式不能用于索引类型 “noticeViewComComp”

将动态获取的key声明为this中属性的类型
let key = ('btnSp_' + data) as keyof typeof this;
this[key];
(但这样是不是不太好)

Cocos相关

目前用的版本是 2.0 2.4

属性检查器添加Enum属性

普通添加显示为数字,需要显示为下拉选择框
在这里插入图片描述

@property({type:cc.Enum(DirectionEnum),tooltip:"方向"}) direction: DirectionEnum = DirectionEnum.VERTICAL;

使用Enum报错 枚举“XXX”用于其声明前

在这里插入图片描述

枚举生命放在类的上方就行了

实现不规则点击区域

需要实现例如下图中白框内的点击事件,普通node只能是正矩形
在这里插入图片描述

目前只能使用不规则碰撞组件来实现,监听TOUCH_END事件
注意:节点大小要大于碰撞体区域,不然无法点击

使用cc.RevoluteJoint的enable激活组件无效

制作中需要将cc.RevoluteJoint组件enable为false后进行激活j.enable = true但是结果是可以挂上但是无支撑时会因重力掉下,和正常的cc.RevoluteJoint对象进行比较发现其_joint(好像是这个名)属性为空

当将未激活的cc.RevoluteJoint组件使用enable激活后需要j.apply();

本地存储以及相关问题

需要本地存储可以用cc.sys.localStorage.getItem()cc.sys.localStorage.setItem()

但是,
存储后拿取map类型的数据,就变为了Object类型,用不了set、get方法

目前解决方式是需要转一下
使用ES8:object.entries将object变为键值对数组new Map(Object.entries(obj))
但我用的不是ES8,就得循环去放入了

objectToMap(obj: object): Map<any, any> {
    let map = new Map();
    Object.keys(obj).forEach(key => {
        map.set(key, obj[key]);
    });
    return map;
}

JSON.stringify(map)返回{}

如上存储数据需要将数据转为字符串,但发现map转完就变成空对象了=_=

所以想用JSON.stringify处理Map时要先将Map类型转为Object

mapToObject(map: Map<any, any>): Object {
    let obj = {};
    map.forEach((v, k) => {
         obj[k] = v;
     });
    return obj;
}

也可以这么转

const obj = [...map.entries()].reduce((obj, [key, value]) => (obj[key] = value, obj), {})

数据加密

需要用的时候可以研究下[这篇帖子](https://blog.csd
n.net/qq_24726043/article/details/134082473?spm=1001.2014.3001.5501)

客户端复制文本

需要复制文本粘贴到微信

if (JSB) {
    try {
        native.copyTextToClipboard(str)(Ljava/lang/String;)V", u.invitation_code);
        oops.gui.toast("复制成功")
    } catch (error) {
    	oops.gui.toast("复制失败")
    }
}

使用客户端方法

可以看文档
调用native的原生接口

热更新

打包步骤:

  1. 确保\assets\resources目录下的config.json中服务器地址配置正确(httpServer字段)
  2. cocos中打开构建发布面板,首次构建需要导入配置文件,已有配置的直接双击打开配置即可
  3. 确保填入正确的资源地址与版本号
  4. 点击“ 构建 ”开始构建
  5. 等待期间可以看下\assets\resources目录下的 project.manifestversion.manifest中的资源地址是否与填写的一致
  6. 等待构建完毕,如上一步一致则跳过第7步
  7. 将构建后的\oops_framework_remote\android下的两个manifest文件复制替换到\assets\resources目录下,再次构建项目,等待构建完毕
  8. 将构建后的\oops_framework_remote\android下的上一版本文件删除,只保留 本次版本文件两个manifest文件
  9. 压缩\oops_framework_remote下的android文件夹
  10. 登录发布地址并进入相应目录上传压缩文件
  11. 将原android文件夹删除,解压缩刚刚上传的文件
  12. 将压缩文件删除
  13. 完成

‘LabelOutline.color’ is deprecated. (Please use Label.outlineColor instead.)

cocos v3.8.3

发现使用<outline></outline>标签的richtext就会提示
看了帖子,应该是官方richtext组件中引用的加描边的方式还是老的,所以开发者无法解决。。。

音效在浏览器正常播放,在安卓上无法播放

这里是引用
换成有比特率的音频能正常播放,应该是格式方面的问题

使用AndroidStudio调试

下载gradle缓慢或者直接报错
修改proj --> gradle --> wrapper --> gradle-wrapper.properties
distributionUrl配置如下修改

distributionUrl=https://mirrors.aliyun.com/macports/distfiles/gradle/gradle-8.5-bin.zip

地址:
https://mirrors.aliyun.com/macports/distfiles/gradle/

能正常build工程后,将手机用usb连接到电脑(好像wifi也可),打开USB调试,
设备管理里就会出现测试用机
在这里插入图片描述
每次重新构建后,需要再次build
在这里插入图片描述
build完成后,直接运行或刷新就行
在这里插入图片描述
在浏览器打开devtools://devtools/bundled/js_app.html?v8only=true&ws=ip地址:43086/00010002-0003-4004-8005-000600070008就可以看控制台输出了

热更新导致重新构建本地代码后 调试版本仍为线上版本

试了将版本号提高仍不行,就把热更逻辑去掉了

使用editbox设置输入内容

需求是设置输入内容为大于0的数并且保留两位小数
InpurMode设置为NUMERIC在浏览器里预览效果是 限制输入为0和整数
但在真机上测效果是 限制输入为0和正数

因为只上安卓所以就直接在input事件里将内容保留两位小数了

第二次进入界面后注册事件内配置参数变为空了

出现的问题是item中操作后需要刷新整个列表,是通过事件触发实现的
第一次进入页面是可以正常刷新的,但第二次进入就不会刷新

通过打log发现事件是触发了的,但是其中的配置参数变为了null,所以this.list?.content导致代码中断
具体怎么一系列导致的不清楚,但需要在退出界面将事件取消注册,修改后就正常了

编辑器相关

引擎升级后,VScode代码不同步

cocos引擎升级后,项目升级,
提示脚本需要更改一些已弃用语法(如node.rotation改为node.angle)
但在vscode中报错飘红,cocos运行正常

在cocos引擎中,选择 开发者-VScode工作流-更新VScode智能提示数据

引擎升级后,tsconfig.json报错

在这里插入图片描述

目前原因不明
exclude添加"dist", "**/*.js"后重启vscode,无报错
再复原后重启vscode还是不报错(欠重启?)

其他

删除字体显示“文件已在System”中打开

已经将vscode和cocos都关了,还是删不了
在这里插入图片描述

是因为文件打开了预览 =_=‘’
在查看里关掉就好了

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

flutter区别于vue的写法

View.dart 页面渲染&#xff1a; 类似于vue里面使用 <template> <div> <span> <textarea>等标签绘制页面, flutter 里面则是使用不同的控件来绘制页面 样式 与传统vue不同的是 flutter里面没有css/scss样式表&#xff0c; Flutter的理念是万物皆…

DICOM标准:DICOM标准中的公用模块、核心模块详解(一)——病人、研究、序列、参考帧和设备模块属性详解

目录 概述 1 公用病人IE模块 1.1 病人模块 2 公用的研究IE模块 2.1 常规研究模块 2.2 病人研究模块 3 公用序列IE模块 3.1 常规序列模块 3.1.1 常规序列属性描述 4 公用参考帧信息实体模块 4.1 参考帧模块 4.1.1 参考帧属性描述 5 公用设备IE模块 5.1 常规设备模…

轻松搞定项目管理!用对在线项目管理工具助你生产力翻倍!

一、引言 在线项目管理是指借助互联网平台和相关软件工具&#xff0c;对项目从启动到结束的全过程进行规划、组织、协调、控制和监督的一种管理方式。它打破了传统项目管理在时间和空间上的限制&#xff0c;使得项目团队成员无论身处何地&#xff0c;都能实时同步项目信息、协…

ERP研究 | 颜值美和道德美,哪个更重要?

摘要 道德美和颜值美都会影响我们的评价。在这里&#xff0c;本研究采用事件相关电位(ERPs)技术探讨了道德美和颜值美如何交互影响社会判断和情感反应。参与者(均为女性)将积极、中性或消极的言语信息与高吸引力或低吸引力面孔进行关联&#xff0c;并对这些面孔进行评分&#…

【Linux】从零开始使用多路转接IO --- epoll

当你偶尔发现语言变得无力时&#xff0c; 不妨安静下来&#xff0c; 让沉默替你发声。 --- 里则林 --- 从零开始认识多路转接 1 epoll的作用和定位2 epoll 的接口3 epoll工作原理4 实现epollserverV1 1 epoll的作用和定位 之前提过的多路转接方案select和poll 都有致命缺点…

利用 Feather 格式加速数据科学工作流:Pandas 中的最佳实践

利用 Feather 格式加速数据科学工作流&#xff1a;Pandas 中的最佳实践 在数据科学中&#xff0c;高效的数据存储和传输对于保持分析流程的流畅性至关重要。传统的 CSV 格式虽然通用&#xff0c;但在处理大规模数据集时速度较慢&#xff0c;特别是在反复读取和写入时。幸运的是…

[极客大挑战 2019]BabySQL 1

[极客大挑战 2019]BabySQL 1 审题 还是SQL注入和之前的是一个系列的。 知识点 联合注入&#xff0c;双写绕过 解题 输入万能密码 发现回显中没有or&#xff0c;猜测是使用正则过滤了or。 尝试双写绕过 登录成功 使用联合查询&#xff0c;本题中过滤了from&#xff0c;w…

全面解析:大数据技术及其应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 全面解析&#xff1a;大数据技术及其应用 全面解析&#xff1a;大数据技术及其应用 全面解析&#xff1a;大数据技术及其应用 大…

七次课掌握 Photoshop:基础与入门

Photoshop 是 Adobe 公司开发的功能强大的图像处理软件&#xff0c;被广泛应用于平面设计、网页设计、摄影后期处理、UI 设计等多个领域。 ◆ ◆ ◆ Photoshop 中的核心概念 一、像素 像素&#xff08;Pixel&#xff09;是组成数字图像的基本单位&#xff0c;如同组成人体的细…

G2 基于生成对抗网络(GAN)人脸图像生成

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 基于生成对抗网络&#xff08;GAN&#xff09;人脸图像生成 这周将构建并训练一个生成对抗网络&#xff08;GAN&#xff09;来生成人脸图像。 GAN 原理概述 …

N-155基于springboot,vue宿舍管理系统

开发工具&#xff1a;IDEA 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 项目采用前后端分离 前端技术&#xff1a;vue3element-plus 服务端技术&#xff1a;springbootmybatis-plus 本项目分为学生、宿舍管理…

友思特应用 | FantoVision边缘计算:多模态传感+AI算法=新型非接触式医疗设备

导读 基于多模态传感技术和先进人工智能技术可有效提升乳腺癌检测的精准性、性价比和效率。友思特 FantoVision 边缘计算机 则为其生物组织数据的高效传输和实时分析提供了坚实基础。 乳腺癌的新型医疗检测方式 乳腺癌是女性面临的最令人担忧的健康问题之一&#xff0c;早期发…

【热门主题】000029 ECMAScript:现代编程的基石

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 【热…

5G时代已来:我们该如何迎接超高速网络?

内容概要 随着5G技术的普及&#xff0c;我们的生活似乎变得更加“科幻”了。想象一下&#xff0c;未来的智能家居将不仅仅是能够听你说“开灯”&#xff1b;它们可能会主动询问你今天心情如何&#xff0c;甚至会推荐你一杯“维他命C芒果榨汁”&#xff0c;帮助你抵御夏天的炎热…

Navigating Net 算法简介

0. Inro \textbf{0. Inro} 0. Inro 1️⃣一些要用到的符号 ( U , dist ⁡ ) (U, \operatorname{dist}) (U,dist)为基础度量空间&#xff0c; S ⊆ U S \subseteq U S⊆U为包含 n ≥ 2 n \geq 2 n≥2个对象的 Input \text{Input} Input​ h ⌈ log ⁡ 2 diam ⁡ ( S ) ⌉ h\lef…

Java项目实战II基于Java+Spring Boot+MySQL的网上摄影工作室(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着互联网…

【Android 系统中使用CallStack类来追踪获取和操作调用栈信息】

Android系统CallStack类的使用 定义使用方法使用场景注意事项应用举例 定义 在 Android 系统中&#xff0c;CallStack 类是一个用于获取和操作调用栈信息的工具类。这个类通常用于调试和日志记录&#xff0c;以帮助开发者了解函数调用的顺序和位置。以下是您提供的代码片段的解…

IBM服务器修改IMM的IP方法

服务器设备&#xff1a;IBM x3550 M4 Server IMM默认IP地址&#xff1a;192.168.70.125 用户名&#xff1a;USERID 密码&#xff1a;PASSW0RD&#xff08;注意是零0&#xff09; 1.服务器开机按F1进入BIOS界面 2.进入System Settings 3.进入Integrated Management Module 4.…

【数据分享】1901-2023年我国省市县镇四级的逐年最高气温数据(免费获取/Shp/Excel格式)

之前我们分享过1901-2023年1km分辨率逐月最高气温栅格数据和Excel和Shp格式的省市县镇四级逐月最高气温数据&#xff0c;原始的逐月最高气温栅格数据来源于彭守璋学者在国家青藏高原科学数据中心平台上分享的数据&#xff01;基于逐月数据我们采用求年平均值的方法得到逐年最高…

【前端】Vue3实现图片标点

前言 公司的业务要求可以在图片的位置上面进行标点&#xff0c;然后在现场对汽车桌椅可以实现按照标点进行质量检测。 技术栈 Vue3&#xff1a;https://cn.vuejs.org/index.htmlAnt Design Vue4.x&#xff1a;https://www.antdv.com/docs/vue/introduce-cn 图像标点 将画布…