@maoyugames/phaser-framework 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +7 -5
- package/dist/index.js +21 -11
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -962,14 +962,16 @@ declare abstract class BaseScene extends Phaser.Scene {
|
|
|
962
962
|
private readonly _bindings;
|
|
963
963
|
/** 清理钩子是否已注册(防止同一实例重复注册) */
|
|
964
964
|
private _cleanupArmed;
|
|
965
|
+
constructor(config?: string | Phaser.Types.Scenes.SettingsConfig);
|
|
965
966
|
/**
|
|
966
|
-
* E4
|
|
967
|
+
* Phaser 生命周期 init:此时 this.events 已就绪。在此挂场景清理钩子(E4)。
|
|
968
|
+
*
|
|
969
|
+
* Phaser 场景实例可被复用(stop → start 重启):每次重启都会再次触发 init / create。
|
|
970
|
+
* armCleanupHooks 内部用 once + 自重注册覆盖每一轮 SHUTDOWN;DESTROY(实例被移除)只需一次。
|
|
967
971
|
*
|
|
968
|
-
*
|
|
969
|
-
* 但会再次触发 create。因此清理逻辑必须在每次 SHUTDOWN 都执行,并在执行后
|
|
970
|
-
* 重新登记(re-arm),保证下一轮生命周期同样被覆盖;DESTROY(实例被移除)只需一次。
|
|
972
|
+
* 注意:业务场景若覆写 init(data),请调用 super.init(data) 以保留自动清理(this.bind / this.scheduler)。
|
|
971
973
|
*/
|
|
972
|
-
|
|
974
|
+
init(_data?: object): void;
|
|
973
975
|
/**
|
|
974
976
|
* 登记需在场景关闭时清理的订阅(E4)。
|
|
975
977
|
* @param unsub App.events.on / socket.onMessage 等返回的 Unsubscribe
|
package/dist/index.js
CHANGED
|
@@ -2107,13 +2107,20 @@ var SceneManager = class {
|
|
|
2107
2107
|
console.warn("[SceneManager] Phaser.Game \u5C1A\u672A\u5C31\u7EEA,goto \u88AB\u5FFD\u7565:", key);
|
|
2108
2108
|
return;
|
|
2109
2109
|
}
|
|
2110
|
-
|
|
2110
|
+
const sceneData = asSceneData(data);
|
|
2111
|
+
const all = manager.getScenes(false);
|
|
2112
|
+
const vehicle = all.find((s) => s.scene.key !== key);
|
|
2113
|
+
for (const scene of all) {
|
|
2111
2114
|
const sceneKey = scene.scene.key;
|
|
2112
|
-
if (sceneKey !== key) {
|
|
2115
|
+
if (sceneKey !== key && scene !== vehicle) {
|
|
2113
2116
|
manager.stop(sceneKey);
|
|
2114
2117
|
}
|
|
2115
2118
|
}
|
|
2116
|
-
|
|
2119
|
+
if (vehicle) {
|
|
2120
|
+
vehicle.scene.start(key, sceneData);
|
|
2121
|
+
} else {
|
|
2122
|
+
manager.start(key, sceneData);
|
|
2123
|
+
}
|
|
2117
2124
|
}
|
|
2118
2125
|
push(key, data) {
|
|
2119
2126
|
const manager = this.game?.scene;
|
|
@@ -3056,13 +3063,6 @@ var Scheduler = class {
|
|
|
3056
3063
|
|
|
3057
3064
|
// src/scene/BaseScene.ts
|
|
3058
3065
|
var BaseScene = class extends Phaser4.Scene {
|
|
3059
|
-
/**
|
|
3060
|
-
* E4 构造时挂上场景生命周期清理钩子。
|
|
3061
|
-
*
|
|
3062
|
-
* Phaser 场景实例可被复用(stop → start 重启):重启时不会再走 constructor,
|
|
3063
|
-
* 但会再次触发 create。因此清理逻辑必须在每次 SHUTDOWN 都执行,并在执行后
|
|
3064
|
-
* 重新登记(re-arm),保证下一轮生命周期同样被覆盖;DESTROY(实例被移除)只需一次。
|
|
3065
|
-
*/
|
|
3066
3066
|
constructor(config) {
|
|
3067
3067
|
super(config);
|
|
3068
3068
|
/* --------------------------- 自动清理 / 调度 --------------------------- */
|
|
@@ -3080,12 +3080,22 @@ var BaseScene = class extends Phaser4.Scene {
|
|
|
3080
3080
|
__publicField(this, "_bindings", []);
|
|
3081
3081
|
/** 清理钩子是否已注册(防止同一实例重复注册) */
|
|
3082
3082
|
__publicField(this, "_cleanupArmed", false);
|
|
3083
|
-
this.armCleanupHooks();
|
|
3084
3083
|
}
|
|
3085
3084
|
/** App 门面:业务在场景内访问网络/音频/存储等的统一入口 */
|
|
3086
3085
|
get app() {
|
|
3087
3086
|
return App;
|
|
3088
3087
|
}
|
|
3088
|
+
/**
|
|
3089
|
+
* Phaser 生命周期 init:此时 this.events 已就绪。在此挂场景清理钩子(E4)。
|
|
3090
|
+
*
|
|
3091
|
+
* Phaser 场景实例可被复用(stop → start 重启):每次重启都会再次触发 init / create。
|
|
3092
|
+
* armCleanupHooks 内部用 once + 自重注册覆盖每一轮 SHUTDOWN;DESTROY(实例被移除)只需一次。
|
|
3093
|
+
*
|
|
3094
|
+
* 注意:业务场景若覆写 init(data),请调用 super.init(data) 以保留自动清理(this.bind / this.scheduler)。
|
|
3095
|
+
*/
|
|
3096
|
+
init(_data) {
|
|
3097
|
+
this.armCleanupHooks();
|
|
3098
|
+
}
|
|
3089
3099
|
/**
|
|
3090
3100
|
* 登记需在场景关闭时清理的订阅(E4)。
|
|
3091
3101
|
* @param unsub App.events.on / socket.onMessage 等返回的 Unsubscribe
|