From f099446867618fc4ff21fe749968ebe89e3f6239 Mon Sep 17 00:00:00 2001 From: donggang <> Date: Fri, 1 Mar 2024 15:24:01 +0800 Subject: [PATCH] =?UTF-8?q?GameComponent=E6=B7=BB=E5=8A=A0=E9=94=AE?= =?UTF-8?q?=E7=9B=98=E4=BA=8B=E4=BB=B6=E5=BC=80=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/core/utils/TimeUtils.ts | 36 +++++++++++++++++++++++++++ assets/core/utils/TimeUtils.ts.meta | 9 +++++++ assets/module/common/GameComponent.ts | 28 ++++++++++++++++++++- 3 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 assets/core/utils/TimeUtils.ts create mode 100644 assets/core/utils/TimeUtils.ts.meta diff --git a/assets/core/utils/TimeUtils.ts b/assets/core/utils/TimeUtils.ts new file mode 100644 index 0000000..4ddc0b6 --- /dev/null +++ b/assets/core/utils/TimeUtils.ts @@ -0,0 +1,36 @@ +/** 时间工具 */ +export class TimeUtil { + /** 间隔天数 */ + public static daysBetween(time1: number | string | Date, time2: number | string | Date): number { + if (time2 == undefined || time2 == null) { + time2 = +new Date(); + } + let startDate = new Date(time1).toLocaleDateString() + let endDate = new Date(time2).toLocaleDateString() + let startTime = new Date(startDate).getTime(); + let endTime = new Date(endDate).getTime(); + let dates = Math.abs((startTime - endTime)) / (1000 * 60 * 60 * 24); + return dates; + } + + /** 间隔秒数 */ + public static secsBetween(time1: number, time2: number) { + if (time2 == undefined || time2 == null) { + time2 = +new Date(); + } + let dates = Math.abs((time2 - time1)) / (1000); + return dates; + } + + /** + * 代码休眠时间 + * @param ms 毫秒 + */ + public static async sleep(ms: number) { + return new Promise((resolve) => { + setTimeout(() => { + resolve(); + }, ms) + }); + } +} \ No newline at end of file diff --git a/assets/core/utils/TimeUtils.ts.meta b/assets/core/utils/TimeUtils.ts.meta new file mode 100644 index 0000000..b99e4d4 --- /dev/null +++ b/assets/core/utils/TimeUtils.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "c20708ec-ab41-4371-a4eb-161c80f32ce6", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/module/common/GameComponent.ts b/assets/module/common/GameComponent.ts index 321037e..7142da0 100644 --- a/assets/module/common/GameComponent.ts +++ b/assets/module/common/GameComponent.ts @@ -4,7 +4,7 @@ * @LastEditors: dgflash * @LastEditTime: 2022-12-13 11:36:00 */ -import { Asset, Component, EventTouch, Node, __private, _decorator } from "cc"; +import { Asset, Component, EventKeyboard, EventTouch, Input, Node, __private, _decorator, input } from "cc"; import { oops } from "../../core/Oops"; import { EventDispatcher } from "../../core/common/event/EventDispatcher"; import { EventMessage, ListenerFunc } from "../../core/common/event/EventMessage"; @@ -261,6 +261,32 @@ export class GameComponent extends Component { console.error(`名为【${name}】的全局事方法不存在`); } } + + /** + * 键盘事件开关 + * @param on 打开键盘事件为true + */ + setKeyboard(on: boolean) { + if (on) { + input.on(Input.EventType.KEY_DOWN, this.onKeyDown, this); + input.on(Input.EventType.KEY_UP, this.onKeyUp, this); + input.on(Input.EventType.KEY_PRESSING, this.onKeyPressing, this); + } + else { + input.off(Input.EventType.KEY_DOWN, this.onKeyDown, this); + input.off(Input.EventType.KEY_UP, this.onKeyUp, this); + input.off(Input.EventType.KEY_PRESSING, this.onKeyPressing, this); + } + } + + /** 键按下 */ + protected onKeyDown(event: EventKeyboard) { } + + /** 键放开 */ + protected onKeyUp(event: EventKeyboard) { } + + /** 键长按 */ + protected onKeyPressing(event: EventKeyboard) { } //#endregion protected onDestroy() {