Cocos creator 3.8 一些事件的使用,加载预制体的两种方式 5

没搞懂rotation与angle,rotation既然是个四元素,可面板上的是什么Vec3的方式显示,而且发现旋转节点,哪怕单独的旋转y轴,有时候三个值也会发生变化,猜测可能引擎内部是按照一定的规则,来表示这个旋转的形式,可能按照x,y,z或者x,z,y这样,来改变每个值的不同,实现这个旋转。

console.log(this.node.children[0].position);
console.log(this.node.children[0].worldPosition);
console.log(this.node.children[0].scale);
this.node.children[0].setScale(v3(2, 2, 2));
console.log(this.node.children[0].worldScale);
console.log(this.node.children[0].angle);
console.log(this.node.children[0].rotation);
//rotation转euler
this.node.children[0].setRotationFromEuler(0, 60, 0);
this.node.children[0].setWorldRotationFromEuler(0, 60, 0);
console.log(this.node.children[0].angle);
console.log(this.node.children[0].rotation);

最新的api,好像要提出systemEvent这个全局单例了。

需要一个预制体,预制体[其他也差不多],声明或者脚本中使用的一些小小的写法,一些判断,允许空,但是需要做一些处理。

@property(Prefab)
plane: Prefab = null!;
// plane: Prefab | null = null;
// plane: Prefab = null as unknown as Prefab;
this.node?.addChild(plane);

下面是一些事件的调试,已经加载预制体的两种方式,界面挂载与动态加载

//事件监听
//系统事件 全局单例模式的 systemEvent SystemEvent
//小写的是实例,大写的是这个类 on emit off
// [Scene] 'systemEvent' is deprecated since v3.4.0, please use 'input' instead.
systemEvent.on(SystemEvent.EventType.TOUCH_START, this._onTouchStart, this);
systemEvent.on(SystemEvent.EventType.TOUCH_MOVE, this._onTouchMove, this);
// systemEvent.on(SystemEvent.EventType.TOUCH_CANCEL, this._onTouchCancel, this);
// systemEvent.on(SystemEvent.EventType.TOUCH_END, this._onTouchEnd, this);
input.on(Input.EventType.TOUCH_START, this._onInputTouchStart, this);
input.on(Input.EventType.KEY_UP, this._onInputkeyUp, this);
//重力感应
input.on(Input.EventType.DEVICEMOTION, this._DeviceMotion, this);
const plane: Node = instantiate(this.plane);
plane.parent = this.node;
plane.setPosition(0, 2, 0);
//loadDir<T extends Asset>(dir: string, onComplete?: ((err: Error | null, data: T[]) => void) | null): void;
resources.loadDir("plane01", (err: Error | null, data: Asset[]) => {if (err) {console.log("加载资源错误");}data.forEach(element => {if (element instanceof Prefab) {const plane: Node = instantiate(element);this.node?.addChild(plane);// plane.setParent(this.node);}});
});

API中一些常用事件的罗列

// export interface _cocos_input_input__InputEventMap {
//     [Input.EventType.MOUSE_DOWN]: (event: EventMouse) => void;
//     [Input.EventType.MOUSE_MOVE]: (event: EventMouse) => void;
//     [Input.EventType.MOUSE_UP]: (event: EventMouse) => void;
//     [Input.EventType.MOUSE_WHEEL]: (event: EventMouse) => void;
//     [Input.EventType.TOUCH_START]: (event: EventTouch) => void;
//     [Input.EventType.TOUCH_MOVE]: (event: EventTouch) => void;
//     [Input.EventType.TOUCH_END]: (event: EventTouch) => void;
//     [Input.EventType.TOUCH_CANCEL]: (event: EventTouch) => void;
//     [Input.EventType.KEY_DOWN]: (event: EventKeyboard) => void;
//     [Input.EventType.KEY_PRESSING]: (event: EventKeyboard) => void;
//     [Input.EventType.KEY_UP]: (event: EventKeyboard) => void;
//     [Input.EventType.DEVICEMOTION]: (event: EventAcceleration) => void;
//     [Input.EventType.GAMEPAD_CHANGE]: (event: EventGamepad) => void;
//     [Input.EventType.GAMEPAD_INPUT]: (event: EventGamepad) => void;
//     [Input.EventType.HANDLE_INPUT]: (event: EventHandle) => void;
//     [Input.EventType.HANDLE_POSE_INPUT]: (event: EventHandle) => void;
//     [Input.EventType.HMD_POSE_INPUT]: (event: EventHMD) => void;
//     [Input.EventType.HANDHELD_POSE_INPUT]: (event: EventHandheld) => void;
// }
// export interface _cocos_input_system_event__SystemEventMap {
//     [SystemEvent.EventType.MOUSE_DOWN]: (event: EventMouse) => void;
//     [SystemEvent.EventType.MOUSE_MOVE]: (event: EventMouse) => void;
//     [SystemEvent.EventType.MOUSE_UP]: (event: EventMouse) => void;
//     [SystemEvent.EventType.MOUSE_WHEEL]: (event: EventMouse) => void;
//     [SystemEvent.EventType.TOUCH_START]: (touch: Touch, event: EventTouch) => void;
//     [SystemEvent.EventType.TOUCH_MOVE]: (touch: Touch, event: EventTouch) => void;
//     [SystemEvent.EventType.TOUCH_END]: (touch: Touch, event: EventTouch) => void;
//     [SystemEvent.EventType.TOUCH_CANCEL]: (touch: Touch, event: EventTouch) => void;
//     [SystemEvent.EventType.KEY_DOWN]: (event: EventKeyboard) => void;
//     [SystemEvent.EventType.KEY_UP]: (event: EventKeyboard) => void;
//     [SystemEvent.EventType.DEVICEMOTION]: (event: EventAcceleration) => void;
// }
/**
*   - cc.Node.EventType.TOUCH_START  // 按下时事件
*   - cc.Node.EventType.TOUCH_Move   // 按住移动后事件
*   - cc.Node.EventType.TOUCH_END    // 按下后松开后事件
*   - cc.Node.EventType.TOUCH_CANCEL // 按下取消事件
*
* 以下事件只在 PC 平台上触发:
*
*   - cc.Node.EventType.MOUSE_DOWN  // 鼠标按下时事件
*   - cc.Node.EventType.MOUSE_MOVE  // 鼠标按住移动后事件
*   - cc.Node.EventType.MOUSE_ENTER // 鼠标进入目标事件
*   - cc.Node.EventType.MOUSE_LEAVE // 鼠标离开目标事件
*   - cc.Node.EventType.MOUSE_UP    // 鼠标松开事件
*/

记住事件监听后也要在必要的时候释放

//释放事件
protected onDestroy(): void {//估计要移除systemEvent这个组件实例了// systemEvent.off(SystemEvent.EventType.TOUCH_START, this._onTouchStart, this);input.off(Input.EventType.TOUCH_START, this._onInputTouchStart, this);// input.off(Input.EventType.TOUCH_START);
}

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

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

相关文章

如何在react中使用 indexDb

下载依赖 npm install localforage 接下来像使用 localstore一样使用它 import React, { useEffect } from react; import localForage from localforage;const App () > {useEffect(() > {// 保存数据async function storeData() {try {await localForage.setItem(us…

Easyexcel(4-模板文件)

相关文章链接 Easyexcel&#xff08;1-注解使用&#xff09;Easyexcel&#xff08;2-文件读取&#xff09;Easyexcel&#xff08;3-文件导出&#xff09;Easyexcel&#xff08;4-模板文件&#xff09; 文件导出 获取 resources 目录下的文件&#xff0c;使用 withTemplate 获…

迁移学习理论与应用

迁移学习&#xff08;Transfer Learning&#xff09;是一种机器学习技术&#xff0c;旨在将一个任务&#xff08;源任务&#xff09;上学到的知识迁移到另一个相关但不完全相同的任务&#xff08;目标任务&#xff09;上&#xff0c;从而提高目标任务的学习效果。这种方法的核心…

近期两篇NeRF/3DGS-based SLAM方案赏析:TS-SLAM and MBA-SLAM

原文链接&#xff1a;近期两篇NeRF/3DGS-based SLAM方案赏析&#xff1a;TS-SLAM and MBA-SLAM paper1&#xff1a;TS-SLAM: 基于轨迹平滑约束优化的神经辐射场SLAM方法 导读 本文提出了TS-SLAM&#xff0c;一种改进的基于神经辐射场&#xff08;NeRF&#xff09;的SLAM方法…

游戏引擎学习第20天

视频参考:https://www.bilibili.com/video/BV1VkBCYmExt 解释 off-by-one 错误 从演讲者的视角&#xff1a;对代码问题的剖析与修复过程 问题的起因 演讲者提到&#xff0c;他可能无意中在代码中造成了一个错误&#xff0c;这与“调试时间标记索引”有关。他发现了一个逻辑问题…

《鸿蒙系统:开启智能新时代的璀璨之星》

一、鸿蒙系统&#xff1a;崛起之路 鸿蒙系统的发展历程堪称一部科技创新的传奇。2012 年&#xff0c;华为前瞻性地启动鸿蒙系统研发项目&#xff0c;彼时或许很少有人能预见到它未来的辉煌。2019 年&#xff0c;鸿蒙系统首个开发者预览版的发布&#xff0c;如同夜空中的一颗璀…

Vue Router 4 中的createWebHistory 显示不出重定向后的网页内容和 createWebHashHistory的区别

Vue Router 4 是 Vue.js 3 的官方路由库&#xff0c;它提供了多种方式来创建路由实例。createWebHistory 和 createWebHashHistory 都是 Vue Router 4 中用于创建历史记录管理器的方法。 1. createWebHistory 用途&#xff1a;使用浏览器的 HTML5 History API 来管理路由。UR…

SQL注入--DNSlog外带注入--理论

什么是DNSlog? DNS的作用是将域名解析为IP 而DNSlog就是存储在DNS服务器上的域名信息&#xff0c;它记录着用户对域名访问信息。可以理解为DNS服务器上的日志文件。 多级域名 比如blog.csdn.net&#xff0c;以点为分隔&#xff0c;从右向左依次是顶级域名、二级域名、三级域…

#Verilog HDL# Verilog中的ifdef/ifndef/else等用法

目录 示例1: 示例2: 示例3: 示例4: 通过示例讲解,`ifdef/`ifndef/`elsif/`else/`endif 的用法 示例1: // Style #1: Only single `ifdef `ifdef <FLAG>// Statements `endif// Style #2: `ifdef with `else part `ifdef <FLAG>// Statements `else// Sta…

Intelli下载Gradle返回Connect Time Out

文章目录 问题解决参考 问题 打开intelliJ项目后&#xff0c;下载Gradle时返回Connect Time Out, 需要对gradle wrapper进行配置。 解决 我的IntelliJthsg版本&#xff1a; IntelliJ IDEA 2023.2.4 (Community Edition) Build #IC-232.10203.10, built on October 25, 2023…

python: Serialize and Deserialize complex JSON using jsonpickle

# encoding: utf-8 # 版权所有 2024 ©涂聚文有限公司 # 许可信息查看&#xff1a;言語成了邀功盡責的功臣&#xff0c;還需要行爲每日來值班嗎 # Serialize and Deserialize complex JSON in Python # 描述&#xff1a;pip install jsonpickle https://github.com/jsonpi…

软件测试面试之重要的名词解释

1、测试(testing) 包括了所有生命周期活动的过程&#xff0c;包括静态的和动态的。涉及计划、准备和对软件产品及其相关工作产品的评估&#xff0c;用以确定它们是否满足了需求&#xff0c;证明它们是否符合了目标&#xff0c;以及是否发现了缺陷。 2.计算机软件的测试目的是 …

基于图的去中心化社会推荐过滤器

目录 原论文研究背景与研究意义概述论文所提出算法的主要贡献GDSRec算法原理与流程问题定义去中心化图&#xff08;decentralized graph&#xff09;所提出方法(三种并行建模)用户建模&#xff08;user modelling&#xff09; 模版代码讲解main.py顶层文件&#xff1a;用于集成…

计算机的错误计算(一百六十三)

摘要 四个算式“sin(0.00024/2)^2”、“(1-cos(0.00024))/2”、“(1-sqrt(1-sin(0.00024)^2))/2”以及“sin(0.00024)^2/(22*sqrt(1-sin(0.00024)^2))”是等价的。但是&#xff0c;在 MATLAB 中计算它们&#xff0c;输出不完全一致&#xff1a;中间两个算式的输出中含有错误数…

递归算法专题一>Pow(x, n)

题目&#xff1a; 解析&#xff1a; 代码&#xff1a; public double myPow(double x, int n) {return n < 0 ? 1.0 / pow(x,-n) : pow(x,n); }private double pow(double x, int n){if(n 0) return 1.0;double tmp pow(x,n / 2);return n % 2 0 ? tmp * tmp : tmp …

【系统架构设计师】真题论文: 论软件可靠性设计技术的应用(包括解题思路和素材)

更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 真题题目(2013年 试题3)解题思路论文素材参考软件可靠性设计技术概念主要的软件可靠性设计技术软件可靠性设计技术的应用流程真题题目(2013年 试题3) 随着软件的日益普及,系统中软件成分不断增加,使得系统对…

论文阅读 SimpleNet: A Simple Network for Image Anomaly Detection and Localization

SimpleNet: A Simple Network for Image Anomaly Detection and Localization 摘要&#xff1a; 该论文提出了一个简单且应用友好的网络&#xff08;称为 SimpleNet&#xff09;来检测和定位异常。SimpleNet 由四个组件组成&#xff1a;&#xff08;1&#xff09;一个预先训练的…

麦肯锡报告 | 未来的经济引擎:解读下一代竞争领域

随着科技和商业的快速发展&#xff0c;一些具有高增长性和高动态性的行业正在悄然崛起&#xff0c;成为推动全球经济发展的新引擎。这些行业被称为“竞争领域”&#xff08;Arenas&#xff09;。据麦肯锡全球研究院&#xff08;MGI&#xff09;的研究&#xff0c;这些领域有望在…

实战分享:如何在HP-UX上高效扩容Oracle 12c RAC ASM磁盘

文章目录 Oracle 12c RAC ASM磁盘扩容 for HP-UX一、扩容原因二、扩容前信息三、扩容详细步骤3.1 存储划分LUN&#xff0c;映射到Oracle 12c RAC相关主机组3.2 扫描查看磁盘3.3 检查两节点间的磁盘盘符是否一致3.4 以一个节点为准同步磁盘盘符3.5 更改磁盘属主、权限3.6 查看AS…

MCSA --- make coding simple again

先上视频&#xff0c;30行代码&#xff08;含空行&#xff09;&#xff0c;只用内置模块&#xff0c;实现绘图与其他控件混合布局。 进一步就可以实现如下“虚拟示波器”演示&#xff1a; from tkinter import * import time import mathdef btn():print(btn pressed)win Tk()…