From 9ea7495b635faaf69640aa587d5a8ace442ae5ac Mon Sep 17 00:00:00 2001 From: npmrun <1549469775@qq.com> Date: Sun, 19 Apr 2026 13:48:15 +0800 Subject: [PATCH] fix: resolve all TypeScript compilation errors --- src/Game/Game.ts | 2 +- src/Game/Stage.ts | 3 +-- src/Game/index.ts | 3 +-- src/Game/type.ts | 2 +- src/components/Button.ts | 8 ++++++-- src/core/AssetManager.ts | 2 +- src/init.ts | 9 ++++----- src/scene/BaseScene.ts | 8 ++++---- src/scene/SceneManager.ts | 12 +++++++++--- src/scene/types.ts | 4 ++-- src/stages/_global/page_0global.ts | 12 +++++++----- src/stages/page_init.ts | 17 ++++++++++------- src/stages/welcome/page_welcome.ts | 2 +- src/stages/welcome2/page_welcome2.ts | 5 ++--- src/util/index.ts | 4 ++-- src/utils/Sound.ts | 4 ++-- 16 files changed, 54 insertions(+), 43 deletions(-) diff --git a/src/Game/Game.ts b/src/Game/Game.ts index 599752e..adf861d 100644 --- a/src/Game/Game.ts +++ b/src/Game/Game.ts @@ -6,7 +6,7 @@ import { Loader, } from "pixi.js"; import detectOrient from "./detectOrient"; -import { EDirection } from "@/enmu"; +import { EDirection } from "@/enums"; import { initDevtools } from '@pixi/devtools'; export default class Game { diff --git a/src/Game/Stage.ts b/src/Game/Stage.ts index 81c22b3..8d83e9b 100644 --- a/src/Game/Stage.ts +++ b/src/Game/Stage.ts @@ -1,7 +1,6 @@ -import { EP } from "@/enmu"; +import { EP } from "@/enums"; import { Container } from "pixi.js"; import Game from "./Game"; -import { windows } from "."; type TStage = { type: EP, diff --git a/src/Game/index.ts b/src/Game/index.ts index 1ea7fc3..683a9cf 100644 --- a/src/Game/index.ts +++ b/src/Game/index.ts @@ -1,8 +1,7 @@ import Game from "./Game"; import Stage from "./Stage"; import { Container, Ticker } from "pixi.js"; -import * as PIXI from "pixi.js"; -import { EP } from "@/enmu"; +import { EP } from "@/enums"; const gameManager = Game.getInstance(); const stageManager = Stage.getInstance(); diff --git a/src/Game/type.ts b/src/Game/type.ts index f05b5f5..f3ea50b 100644 --- a/src/Game/type.ts +++ b/src/Game/type.ts @@ -1,4 +1,4 @@ -import { EP } from "@/enmu"; +import { EP } from "@/enums"; import { IWindow } from "."; import { Container, Ticker } from "pixi.js"; diff --git a/src/components/Button.ts b/src/components/Button.ts index e7db33c..d4468f8 100644 --- a/src/components/Button.ts +++ b/src/components/Button.ts @@ -22,7 +22,7 @@ export interface ButtonOptions { export class Button { private config: ButtonOptions; private _container: Container; - private textObj: Text; + textObj: Text; private bgRect?: Graphics; private bgNine?: NineSliceSprite; private padding: { x: number; y: number }; @@ -62,7 +62,11 @@ export class Button { this.updateView(); } - get container(): Container { + get _comp(): Container { + return this._container; + } + + getView(): Container { return this._container; } diff --git a/src/core/AssetManager.ts b/src/core/AssetManager.ts index 25d9d20..1252b17 100644 --- a/src/core/AssetManager.ts +++ b/src/core/AssetManager.ts @@ -25,7 +25,7 @@ class AssetManager { this.referenceCounts.set(name, count); logger.debug(`AssetManager: reuse bundle "${name}", refCount = ${count}`); onProgress?.(1); - return Assets.getBundle(name); + return Assets.loadBundle(name); } // 首次加载 diff --git a/src/init.ts b/src/init.ts index 98ffa18..074effb 100644 --- a/src/init.ts +++ b/src/init.ts @@ -25,7 +25,6 @@ export async function initApp(): Promise { // 文件名匹配提取场景名称 const match = path.match(/page_(.*?)\.ts$/); if (!match) continue; - const sceneName = match[1]; const sceneClass = (mod as { default: Constructor }).default; const scene = new sceneClass(); @@ -50,13 +49,13 @@ export async function initApp(): Promise { // 更新常驻场景 for (const scene of sceneManager.getAllScenes()) { if (scene.type === SceneType.Resident && scene.stage.visible) { - scene.update?.(dt, ticker); + scene.update?.(dt, scene.name, ticker); } } // 更新当前场景 if (current) { - current.update?.(dt, ticker); + current.update?.(dt, current.name, ticker); } game.render(); @@ -64,12 +63,12 @@ export async function initApp(): Promise { // lateUpdate for (const scene of sceneManager.getAllScenes()) { if (scene.type === SceneType.Resident && scene.stage.visible && scene.lateUpdate) { - scene.lateUpdate(dt, ticker); + scene.lateUpdate(dt, scene.name, ticker); } } if (current?.lateUpdate) { - current.lateUpdate(dt, ticker); + current.lateUpdate(dt, current.name, ticker); } }); diff --git a/src/scene/BaseScene.ts b/src/scene/BaseScene.ts index fca9a38..cf64a9c 100644 --- a/src/scene/BaseScene.ts +++ b/src/scene/BaseScene.ts @@ -1,6 +1,6 @@ import { Container, Ticker } from "pixi.js"; import { SceneType } from "@/enums/SceneType"; -import type { IBaseScene, SceneLifeCycle } from "./types"; +import type { IBaseScene } from "./types"; export abstract class BaseScene implements IBaseScene { abstract stage: Container; @@ -16,7 +16,7 @@ export abstract class BaseScene implements IBaseScene { } // 用于注入场景切换方法 - changeScene(name: string, options?: { isHolderLast?: boolean }): void { + changeScene(_name: string, _options?: { isHolderLast?: boolean }): void { // 由 SceneManager 注入实现 throw new Error("changeScene not injected by SceneManager"); } @@ -27,8 +27,8 @@ export abstract class BaseScene implements IBaseScene { layout(): void | Promise {} onLoad(): void | Promise {} onUnLoad(): void | Promise {} - update(dt: number, ticker: Ticker): void {} - lateUpdate(dt: number, ticker: Ticker): void {} + update(_dt: number, _name: string, _ticker: Ticker): void {} + lateUpdate(_dt: number, _name: string, _ticker: Ticker): void {} } export default BaseScene; \ No newline at end of file diff --git a/src/scene/SceneManager.ts b/src/scene/SceneManager.ts index bb296cd..8a4299c 100644 --- a/src/scene/SceneManager.ts +++ b/src/scene/SceneManager.ts @@ -1,10 +1,16 @@ import { Container } from "pixi.js"; import Game from "@/core/Game"; import { logger } from "@/core/Logger"; -import { assetManager } from "@/core/AssetManager"; import { SceneType } from "@/enums/SceneType"; import { BaseScene } from "./BaseScene"; -import type { SceneConfig, IBaseScene } from "./types"; +import type { IBaseScene } from "./types"; + +// Extend the Container interface to allow setting and accessing _isHolderLast +declare module 'pixi.js' { + interface Container { + _isHolderLast?: boolean; + } +} declare global { interface Container { @@ -217,7 +223,7 @@ class SceneManager { type = type; } - const scene = new DynamicScene(); + const scene = new DynamicScene(name); this.registerScene(scene); return container; } diff --git a/src/scene/types.ts b/src/scene/types.ts index 01942c8..97bcc23 100644 --- a/src/scene/types.ts +++ b/src/scene/types.ts @@ -19,9 +19,9 @@ export interface SceneLifeCycle { /** 场景即将卸载 */ onUnLoad?(): void | Promise; /** 每帧更新 */ - update?(dt: number, ticker: Ticker): void; + update?(dt: number, name: string, ticker: Ticker): void; /** 更新后处理 */ - lateUpdate?(dt: number, ticker: Ticker): void; + lateUpdate?(dt: number, name: string, ticker: Ticker): void; } export interface IBaseScene extends SceneLifeCycle { diff --git a/src/stages/_global/page_0global.ts b/src/stages/_global/page_0global.ts index 8474d8b..3079e7a 100644 --- a/src/stages/_global/page_0global.ts +++ b/src/stages/_global/page_0global.ts @@ -1,10 +1,9 @@ import { Button } from "@/components/Button"; -import { EP } from "@/enmu"; +import { EP } from "@/enums"; import { defineWindow } from "@/Game"; -import { loadAsset } from "@/Game/Assets"; import Position from "@/Game/Position"; import { PWindow } from "@/Game/type"; -import { Assets, Container } from "pixi.js"; +import { Assets } from "pixi.js"; export default defineWindow( class extends PWindow { @@ -24,9 +23,12 @@ export default defineWindow( text: "全局", bg: await Assets.load('btn-bgaa'), pressBg: await Assets.load("btn-bg-pressaa"), - position: () => Position.get("center", "center", { y: 100, x: 0 }) + position: () => Position.get("center", "center", { y: 100, x: 0 }), + onClick: () => { + console.log("Button clicked"); + } }) - this.stage.addChild(this.btn._comp) + this.stage.addChild(this.btn.getView()) } onLoad() { console.log("global page loaded"); diff --git a/src/stages/page_init.ts b/src/stages/page_init.ts index 338358f..81d3c8a 100644 --- a/src/stages/page_init.ts +++ b/src/stages/page_init.ts @@ -1,10 +1,10 @@ import { Button } from "@/components/Button"; -import { gameManager, defineWindow, stageManager } from "@/Game"; +import { defineWindow } from "@/Game"; import Position from "@/Game/Position"; import Sound from "@/Game/Sound"; -import { Container, Sprite, Text, NineSlicePlane, Texture, AnimatedSprite, Rectangle, Assets, AssetsBundle, NineSliceSprite, Ticker } from "pixi.js"; +import { Container, Text, NineSliceSprite, AnimatedSprite, Rectangle, Ticker, Texture } from "pixi.js"; import { PWindow } from "@/Game/type"; -import { loadAsset, unLoadAsset } from "@/Game/Assets"; +import { loadAsset } from "@/Game/Assets"; // import { Button } from '@pixi/ui'; export default defineWindow( @@ -18,9 +18,12 @@ export default defineWindow( const btn = new Button({ text: "加载中", position: () => Position.get("center", "center"), + onClick: () => { + console.log("Loading button clicked"); + } }); btn._comp.zIndex = 111111 - this.stage.addChild(btn._comp); + this.stage.addChild(btn.getView()); this.assets = await loadAsset("load-screen", (progress: number) => { console.log(progress); btn.textObj.text = "进度:" + progress @@ -65,13 +68,13 @@ export default defineWindow( bg: this.assets["btn-bg"], pressBg: this.assets["btn-bg-press"], position: () => Position.get("center", "center", { y: 200, x: 0 }), - click: () => { + onClick: () => { this.changeStage("welcome", { isHolderLast: false }) // this.pixie.gotoAndPlay(0); // this.startBtn.textObj.text = "1111111111111111111111111111111111111" } }) - allChild.push(this.startBtn._comp) + allChild.push(this.startBtn.getView()) // console.log(button); // this.startBtn = Button({ @@ -137,7 +140,7 @@ export default defineWindow( console.log("onUnLoad loading"); } - update(dt: number, name: string, ticker: Ticker) { + update(_dt: number, _name: string, ticker: Ticker) { if (this.pixie) { this.pixie.update(ticker) } diff --git a/src/stages/welcome/page_welcome.ts b/src/stages/welcome/page_welcome.ts index a0bf5c0..178c729 100644 --- a/src/stages/welcome/page_welcome.ts +++ b/src/stages/welcome/page_welcome.ts @@ -21,7 +21,7 @@ export default class WelcomeScene extends BaseScene { position: () => position.center(), }); - this.stage.addChild(btn.container); + this.stage.addChild(btn.getView()); } onLoad(): void { diff --git a/src/stages/welcome2/page_welcome2.ts b/src/stages/welcome2/page_welcome2.ts index 1ac1353..c6601c8 100644 --- a/src/stages/welcome2/page_welcome2.ts +++ b/src/stages/welcome2/page_welcome2.ts @@ -1,6 +1,5 @@ -import { EP } from "@/enmu"; -import { stageManager, defineWindow, GG } from "@/Game"; -import { Graphics, Container } from "pixi.js"; +import { defineWindow } from "@/Game"; +import { Graphics } from "pixi.js"; import { PWindow } from "@/Game/type"; export default defineWindow("welcome2", class extends PWindow { diff --git a/src/util/index.ts b/src/util/index.ts index 852cabc..dffb89b 100644 --- a/src/util/index.ts +++ b/src/util/index.ts @@ -6,7 +6,7 @@ export function addTextureSprite(texture: Texture, cb?: (sprite: Sprite) => void avatar.on("click", () => { cb && cb(avatar); }); - avatar.buttonMode = true; + avatar.cursor = "pointer"; avatar.scale.set(0.5, 0.5); return avatar; } @@ -18,7 +18,7 @@ export function addSprite(cb: (sprite: Sprite) => void) { avatar.on("click", () => { cb && cb(avatar); }); - avatar.buttonMode = true; + avatar.cursor = "pointer"; avatar.scale.set(0.5, 0.5); return avatar; } diff --git a/src/utils/Sound.ts b/src/utils/Sound.ts index c99fcad..e7b1bda 100644 --- a/src/utils/Sound.ts +++ b/src/utils/Sound.ts @@ -6,7 +6,7 @@ class SoundManager { private muted: boolean = false; constructor() { - sound.volume = this.volume; + sound.volumeAll = this.volume; } add(name: string, url: string, options?: { singleInstance?: boolean; autoPlay?: boolean }): void { @@ -43,7 +43,7 @@ class SoundManager { setVolume(volume: number): void { this.volume = Math.max(0, Math.min(1, volume)); - sound.volume = this.volume; + sound.volumeAll = this.volume; } getVolume(): number {