@ives_xxz/framework 1.5.17 → 1.6.0
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/FW.d.ts +28 -15
- package/controller/FWLayerController.ts +54 -106
- package/language/FWLanguage.ts +9 -6
- package/manager/FWAssetManager.ts +48 -46
- package/manager/FWLayerManager.ts +0 -7
- package/manager/FWUiManager.ts +136 -96
- package/package.json +1 -1
- package/service/http/FWHttp.ts +56 -37
package/FW.d.ts
CHANGED
|
@@ -373,11 +373,12 @@ declare namespace FW {
|
|
|
373
373
|
type Symbol = string | number;
|
|
374
374
|
|
|
375
375
|
type UiManager = {
|
|
376
|
-
|
|
376
|
+
register(args: RegisterArgs);
|
|
377
|
+
find(path: string, referenceNode: cc.Node): cc.Node;
|
|
377
378
|
pauseEvent<T extends TargetType>(target: T);
|
|
378
379
|
resumeEvent<T extends TargetType>(target: T);
|
|
379
380
|
hasRegister(eventName: string, target: FW.TargetType): boolean;
|
|
380
|
-
unRegisterEvent(args:
|
|
381
|
+
unRegisterEvent(args: RegisterArgs);
|
|
381
382
|
unRegisterTarget(target: TargetType);
|
|
382
383
|
unRegisterAll();
|
|
383
384
|
buttonEnable(target: TargetType);
|
|
@@ -599,7 +600,7 @@ declare namespace FW {
|
|
|
599
600
|
/**
|
|
600
601
|
* 事件管理参数
|
|
601
602
|
*/
|
|
602
|
-
type EventManagerArgs = string | number | object | [];
|
|
603
|
+
type EventManagerArgs = string | number | object | void | boolean | [];
|
|
603
604
|
|
|
604
605
|
/**
|
|
605
606
|
* 层级打开参数
|
|
@@ -1138,15 +1139,8 @@ declare namespace FW {
|
|
|
1138
1139
|
prototype: T;
|
|
1139
1140
|
}
|
|
1140
1141
|
): T;
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
/** 指定注册框架自定义事件 */
|
|
1145
|
-
registerFWEvent(eventName: string, event: FW.FWEvent | FW.FWEvent[]): void;
|
|
1146
|
-
|
|
1147
|
-
registerEvent(args: FW.RegisterEventArgs | FW.RegisterEventArgs[]): void;
|
|
1148
|
-
|
|
1149
|
-
unRegisterEvent(args: FW.RegisterEventArgs);
|
|
1142
|
+
registerEvent(args: RegisterArgs): void;
|
|
1143
|
+
unRegisterEvent(args: RegisterArgs);
|
|
1150
1144
|
unRegisterAll(): void;
|
|
1151
1145
|
unRegisterTarget(target: TargetType);
|
|
1152
1146
|
/** 暂停事件 */
|
|
@@ -1168,15 +1162,34 @@ declare namespace FW {
|
|
|
1168
1162
|
};
|
|
1169
1163
|
|
|
1170
1164
|
type CCEvent = {
|
|
1165
|
+
eventName?: string;
|
|
1171
1166
|
cb: (...args: any) => void;
|
|
1172
1167
|
target: TargetType;
|
|
1168
|
+
responseInterval?: number;
|
|
1173
1169
|
pause?: boolean;
|
|
1170
|
+
enable?: boolean;
|
|
1171
|
+
responseTime?: number;
|
|
1172
|
+
lastResponseTimestamp?: number;
|
|
1174
1173
|
};
|
|
1175
1174
|
|
|
1176
1175
|
type FWEvent = {
|
|
1176
|
+
eventName?: string;
|
|
1177
1177
|
cb: (...args: any) => void;
|
|
1178
|
-
|
|
1179
|
-
|
|
1178
|
+
responseTime?: number;
|
|
1179
|
+
responseInterval?: number;
|
|
1180
|
+
lastResponseTimestamp?: number;
|
|
1181
|
+
options?: {
|
|
1182
|
+
priority?: number;
|
|
1183
|
+
intercept?: boolean;
|
|
1184
|
+
pause?: boolean;
|
|
1185
|
+
enable?: boolean;
|
|
1186
|
+
};
|
|
1187
|
+
};
|
|
1188
|
+
|
|
1189
|
+
type RegisterArgs = {
|
|
1190
|
+
target?: any;
|
|
1191
|
+
CCEvent?: CCEvent[];
|
|
1192
|
+
FWEvent?: FWEvent[];
|
|
1180
1193
|
};
|
|
1181
1194
|
|
|
1182
1195
|
type RegisterEventArgs = {
|
|
@@ -1189,7 +1202,7 @@ declare namespace FW {
|
|
|
1189
1202
|
/**
|
|
1190
1203
|
* 注册事件对象
|
|
1191
1204
|
*/
|
|
1192
|
-
target
|
|
1205
|
+
target?: any;
|
|
1193
1206
|
/**
|
|
1194
1207
|
* 自定义事件
|
|
1195
1208
|
*/
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { FWSystemDefine } from "../define/FWSystemDefine";
|
|
2
2
|
import FWLayer from "../layer/FWLayer";
|
|
3
3
|
import { FWLayerData } from "../manager/FWLayerManager";
|
|
4
|
-
import FWLog from "../log/FWLog";
|
|
5
4
|
import { FrameworkBase } from "../FrameworkBase";
|
|
6
5
|
export abstract class FWLayerController
|
|
7
6
|
extends FrameworkBase
|
|
@@ -56,17 +55,7 @@ export abstract class FWLayerController
|
|
|
56
55
|
* @returns
|
|
57
56
|
*/
|
|
58
57
|
find(path: string, referenceNode: cc.Node) {
|
|
59
|
-
|
|
60
|
-
FWLog.error(`查找节点失败:${path}`);
|
|
61
|
-
return undefined;
|
|
62
|
-
}
|
|
63
|
-
const node = cc.find(path, referenceNode);
|
|
64
|
-
|
|
65
|
-
if (!cc.isValid(node)) {
|
|
66
|
-
FWLog.error(`查找节点失败:${path}`);
|
|
67
|
-
return undefined;
|
|
68
|
-
}
|
|
69
|
-
return node;
|
|
58
|
+
return this.entry.uiMgr.find(path, referenceNode);
|
|
70
59
|
}
|
|
71
60
|
|
|
72
61
|
hide(ctr?: FW.LayerController) {
|
|
@@ -106,104 +95,63 @@ export abstract class FWLayerController
|
|
|
106
95
|
return this.layer.getComponentInChildren(type);
|
|
107
96
|
}
|
|
108
97
|
|
|
109
|
-
/** 指定注册CC事件 */
|
|
110
|
-
registerCCEvent(event: FW.CCEvent | FW.CCEvent[]);
|
|
111
|
-
registerCCEvent(eventName: string, event: FW.CCEvent | FW.CCEvent[]);
|
|
112
|
-
registerCCEvent() {
|
|
113
|
-
let eventName: string;
|
|
114
|
-
let event: FW.CCEvent | FW.CCEvent[];
|
|
115
|
-
if (arguments.length == 1) {
|
|
116
|
-
event = arguments[0];
|
|
117
|
-
} else {
|
|
118
|
-
eventName = arguments[0];
|
|
119
|
-
event = arguments[1];
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
if (Array.isArray(event)) {
|
|
123
|
-
event.forEach((v) => {
|
|
124
|
-
FW.Entry.uiMgr.registerButtonEvent({
|
|
125
|
-
eventName: eventName,
|
|
126
|
-
CCEvent: {
|
|
127
|
-
cb: v.cb,
|
|
128
|
-
target: v.target,
|
|
129
|
-
pause: v.pause,
|
|
130
|
-
},
|
|
131
|
-
responseInterval: this.defaultResponseInterval,
|
|
132
|
-
target: this,
|
|
133
|
-
});
|
|
134
|
-
});
|
|
135
|
-
} else {
|
|
136
|
-
FW.Entry.uiMgr.registerButtonEvent({
|
|
137
|
-
eventName: eventName,
|
|
138
|
-
CCEvent: {
|
|
139
|
-
cb: event.cb,
|
|
140
|
-
target: event.target,
|
|
141
|
-
pause: event.pause,
|
|
142
|
-
},
|
|
143
|
-
responseInterval: this.defaultResponseInterval,
|
|
144
|
-
target: this,
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
|
|
149
98
|
/**
|
|
150
99
|
* 注册事件
|
|
151
|
-
* 支持CC事件和框架事件
|
|
152
100
|
*/
|
|
153
|
-
registerEvent(args: FW.
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
args
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
101
|
+
registerEvent(args: FW.RegisterArgs): void {
|
|
102
|
+
args.target = args.target || this;
|
|
103
|
+
args.CCEvent?.forEach(
|
|
104
|
+
(v) => (v.responseInterval = this.defaultResponseInterval)
|
|
105
|
+
);
|
|
106
|
+
args.FWEvent?.forEach(
|
|
107
|
+
(v) => (v.responseInterval = this.defaultResponseInterval)
|
|
108
|
+
);
|
|
109
|
+
return this.entry.uiMgr.register({
|
|
110
|
+
target: this,
|
|
111
|
+
CCEvent: args?.CCEvent ? args?.CCEvent : [],
|
|
112
|
+
FWEvent: args?.FWEvent ? args?.FWEvent : [],
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
cc(
|
|
117
|
+
target: cc.Node,
|
|
118
|
+
cb: (event: cc.Event) => void,
|
|
119
|
+
responseInterval?: number,
|
|
120
|
+
eventName?: string
|
|
121
|
+
): this {
|
|
122
|
+
this.registerEvent({
|
|
123
|
+
target: this,
|
|
124
|
+
CCEvent: [
|
|
125
|
+
{
|
|
126
|
+
eventName: eventName || cc.Node.EventType.TOUCH_END,
|
|
127
|
+
cb: cb,
|
|
128
|
+
target: target,
|
|
129
|
+
responseInterval: responseInterval,
|
|
130
|
+
},
|
|
131
|
+
],
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
return this;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
fw(
|
|
138
|
+
eventName: string,
|
|
139
|
+
cb: (event: cc.Event) => void,
|
|
140
|
+
target?: cc.Node,
|
|
141
|
+
responseInterval?: number
|
|
142
|
+
): this {
|
|
143
|
+
this.registerEvent({
|
|
144
|
+
target: target || this,
|
|
145
|
+
FWEvent: [
|
|
146
|
+
{
|
|
187
147
|
eventName: eventName,
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
cb: v.cb,
|
|
191
|
-
pause: v.pause,
|
|
192
|
-
},
|
|
193
|
-
target: this,
|
|
194
|
-
});
|
|
195
|
-
});
|
|
196
|
-
} else {
|
|
197
|
-
FW.Entry.uiMgr.registerButtonEvent({
|
|
198
|
-
eventName: eventName,
|
|
199
|
-
FWEvent: {
|
|
200
|
-
target: event.target,
|
|
201
|
-
cb: event.cb,
|
|
202
|
-
pause: event.pause,
|
|
148
|
+
cb: cb,
|
|
149
|
+
responseInterval: responseInterval ?? this.defaultResponseInterval,
|
|
203
150
|
},
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
151
|
+
],
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
return this;
|
|
207
155
|
}
|
|
208
156
|
|
|
209
157
|
/**
|
|
@@ -211,7 +159,7 @@ export abstract class FWLayerController
|
|
|
211
159
|
* @param args
|
|
212
160
|
* @returns
|
|
213
161
|
*/
|
|
214
|
-
unRegisterEvent(args: FW.
|
|
162
|
+
unRegisterEvent(args: FW.RegisterArgs) {
|
|
215
163
|
FW.Entry.uiMgr.unRegisterEvent(args);
|
|
216
164
|
}
|
|
217
165
|
|
package/language/FWLanguage.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { FWEventDefine } from
|
|
2
|
-
import { FWLodash } from
|
|
1
|
+
import { FWEventDefine } from "../define/FWEventDefine";
|
|
2
|
+
import { FWLodash } from "../utils/FWLodash";
|
|
3
3
|
|
|
4
4
|
const { ccclass, property, executeInEditMode } = cc._decorator;
|
|
5
5
|
|
|
@@ -10,8 +10,11 @@ export default abstract class FWLanguage extends cc.Component {
|
|
|
10
10
|
protected _language: number = 0;
|
|
11
11
|
|
|
12
12
|
@property({
|
|
13
|
-
type: FWLodash.CCEnum([
|
|
14
|
-
|
|
13
|
+
type: FWLodash.CCEnum([
|
|
14
|
+
"请选择语言",
|
|
15
|
+
...FW.Entry.languageMgr.getSupportedLanguages(),
|
|
16
|
+
]),
|
|
17
|
+
displayName: "language",
|
|
15
18
|
visible: true,
|
|
16
19
|
serializable: true,
|
|
17
20
|
})
|
|
@@ -31,7 +34,7 @@ export default abstract class FWLanguage extends cc.Component {
|
|
|
31
34
|
|
|
32
35
|
private refreshInspector() {
|
|
33
36
|
//@ts-ignore
|
|
34
|
-
Editor.Utils.refreshSelectedInspector(
|
|
37
|
+
Editor.Utils.refreshSelectedInspector("node", this.node.uuid);
|
|
35
38
|
}
|
|
36
39
|
|
|
37
40
|
protected onLoad(): void {
|
|
@@ -41,7 +44,7 @@ export default abstract class FWLanguage extends cc.Component {
|
|
|
41
44
|
this._language = FW.Entry.languageMgr.getLanguageIndex();
|
|
42
45
|
this.onLanguageChange();
|
|
43
46
|
},
|
|
44
|
-
this
|
|
47
|
+
this
|
|
45
48
|
);
|
|
46
49
|
}
|
|
47
50
|
|
|
@@ -105,54 +105,56 @@ export class FWAssetManager extends FWManager implements FW.AssetManager {
|
|
|
105
105
|
? assetProperty
|
|
106
106
|
: [assetProperty];
|
|
107
107
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
if (!bundle) {
|
|
129
|
-
FWLog.error(`加载bundle失败,请检查!`);
|
|
130
|
-
return undefined;
|
|
131
|
-
}
|
|
108
|
+
await Promise.all(
|
|
109
|
+
propertys.map(async (property) => {
|
|
110
|
+
const bundleName = property.bundle || FW.Entry.bundleName;
|
|
111
|
+
const type = property.type;
|
|
112
|
+
const path = property.path;
|
|
113
|
+
const progress = property.progress;
|
|
114
|
+
|
|
115
|
+
if (!bundleName || bundleName === "") {
|
|
116
|
+
FWLog.error(`找不到bundle${bundleName},或者bundle未加载!`);
|
|
117
|
+
return undefined;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
if (!path || path === "") {
|
|
121
|
+
FWLog.error(`找不到资源路径${path},请检查!`);
|
|
122
|
+
return undefined;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
let bundle: cc.AssetManager.Bundle = await this.resMgr.loadBundle(
|
|
126
|
+
bundleName
|
|
127
|
+
);
|
|
132
128
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
129
|
+
if (!bundle) {
|
|
130
|
+
FWLog.error(`加载bundle失败,请检查!`);
|
|
131
|
+
return undefined;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
return await this.invoke(
|
|
135
|
+
FW.Entry.promiseMgr.execute((resolve, reject, signal) => {
|
|
136
|
+
bundle.preload(
|
|
137
|
+
path,
|
|
138
|
+
type,
|
|
139
|
+
(
|
|
140
|
+
finish: number,
|
|
141
|
+
total: number,
|
|
142
|
+
item: cc.AssetManager.RequestItem
|
|
143
|
+
) => {
|
|
144
|
+
progress?.(finish, total, item);
|
|
145
|
+
},
|
|
146
|
+
(err: Error, item: cc.AssetManager.RequestItem[]) => {
|
|
147
|
+
if (err || !item || item?.length == 0) {
|
|
148
|
+
reject(err || "preload failed!");
|
|
149
|
+
}
|
|
150
|
+
resolve(item);
|
|
148
151
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
});
|
|
152
|
+
);
|
|
153
|
+
}, FWSystemConfig.PromiseConfig.loadAsset).promise,
|
|
154
|
+
`preLoadAssets -> ${property.path}`
|
|
155
|
+
);
|
|
156
|
+
})
|
|
157
|
+
);
|
|
156
158
|
}
|
|
157
159
|
|
|
158
160
|
/**
|
|
@@ -1,15 +1,8 @@
|
|
|
1
1
|
import { FWManager } from "./FWManager";
|
|
2
|
-
import { FWLayerController } from "../controller/FWLayerController";
|
|
3
2
|
import { FWSystemDefine } from "../define/FWSystemDefine";
|
|
4
3
|
import FWLayer from "../layer/FWLayer";
|
|
5
4
|
import FWLog from "../log/FWLog";
|
|
6
5
|
import { FWQueue } from "../utils/FWQueue";
|
|
7
|
-
import FWAssetConfig from "../config/FWAssetConfig";
|
|
8
|
-
import FWLogic from "../logic/FWLogic";
|
|
9
|
-
import FWData from "../data/FWData";
|
|
10
|
-
import FWSocketSender from "../service/socket/FWSocketSender";
|
|
11
|
-
import FWSocketHandle from "../service/socket/FWSocketHandle";
|
|
12
|
-
import Framework from "../Framework";
|
|
13
6
|
import { FrameworkBase } from "../FrameworkBase";
|
|
14
7
|
import { PerformanceMonitor } from "../expand/FWDecorator";
|
|
15
8
|
|
package/manager/FWUiManager.ts
CHANGED
|
@@ -1,97 +1,19 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import { searchChild } from "../expand/FWDecorator";
|
|
2
|
+
import FWLog from "../log/FWLog";
|
|
3
|
+
import { FWManager } from "./FWManager";
|
|
3
4
|
|
|
4
5
|
export default class FWUiManager extends FWManager implements FW.UiManager {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
private eventMap: Map<
|
|
7
|
+
number,
|
|
8
|
+
{
|
|
9
|
+
uniqueId: number;
|
|
10
|
+
target: FW.TargetType;
|
|
11
|
+
event: FW.CCEvent | FW.FWEvent;
|
|
12
|
+
}
|
|
13
|
+
> = new Map();
|
|
14
|
+
private uniqueId: number = 0;
|
|
10
15
|
public initialize(): void {}
|
|
11
16
|
public onDestroy(): void {}
|
|
12
|
-
registerButtonEvent(args: FW.RegisterEventArgs | FW.RegisterEventArgs[]) {
|
|
13
|
-
const register: (eventArgs: FW.RegisterEventArgs) => void = (
|
|
14
|
-
eventArgs: FW.RegisterEventArgs,
|
|
15
|
-
) => {
|
|
16
|
-
if (eventArgs?.CCEvent?.target instanceof cc.Node) {
|
|
17
|
-
if (cc.isValid(eventArgs.CCEvent.target)) {
|
|
18
|
-
eventArgs.CCEvent.target.on(
|
|
19
|
-
eventArgs.eventName || cc.Node.EventType.TOUCH_END,
|
|
20
|
-
(evt: cc.Event.EventTouch, custom?: string) => {
|
|
21
|
-
/** 未设置禁用默认为启用状态 */
|
|
22
|
-
if (eventArgs.enable === undefined) {
|
|
23
|
-
eventArgs.enable = true;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
if (!eventArgs.enable) return;
|
|
27
|
-
|
|
28
|
-
/** 检测触发间隔 */
|
|
29
|
-
if (Date.now() - eventArgs.lastResponseTimestamp < eventArgs.responseInterval) {
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
const button = (eventArgs.CCEvent.target as cc.Node).getComponent(cc.Button);
|
|
34
|
-
if (button && !button.interactable) return;
|
|
35
|
-
|
|
36
|
-
eventArgs.lastResponseTimestamp = Date.now();
|
|
37
|
-
eventArgs.CCEvent.cb?.bind(eventArgs.target)?.(evt, custom, eventArgs.data);
|
|
38
|
-
},
|
|
39
|
-
eventArgs.CCEvent.target,
|
|
40
|
-
);
|
|
41
|
-
this.eventMap.set(
|
|
42
|
-
`${eventArgs.eventName}_${eventArgs.CCEvent.target.name}`,
|
|
43
|
-
eventArgs.CCEvent,
|
|
44
|
-
);
|
|
45
|
-
} else {
|
|
46
|
-
FWLog.warn(`register CCEvent is not cc.Node:${eventArgs.CCEvent.target}`);
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
if (eventArgs.FWEvent) {
|
|
52
|
-
FW.Entry.evtMgr?.register(
|
|
53
|
-
eventArgs.eventName,
|
|
54
|
-
(
|
|
55
|
-
args1?: FW.EventManagerArgs,
|
|
56
|
-
args2?: FW.EventManagerArgs,
|
|
57
|
-
args3?: FW.EventManagerArgs,
|
|
58
|
-
args4?: FW.EventManagerArgs,
|
|
59
|
-
args5?: FW.EventManagerArgs,
|
|
60
|
-
args6?: FW.EventManagerArgs,
|
|
61
|
-
args7?: FW.EventManagerArgs,
|
|
62
|
-
args8?: FW.EventManagerArgs,
|
|
63
|
-
args9?: FW.EventManagerArgs,
|
|
64
|
-
args10?: FW.EventManagerArgs,
|
|
65
|
-
) => {
|
|
66
|
-
if (Date.now() - eventArgs.lastResponseTimestamp < (eventArgs.responseInterval || 0)) {
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
eventArgs.lastResponseTimestamp = Date.now();
|
|
70
|
-
eventArgs.FWEvent.cb?.bind(eventArgs.FWEvent.target)(
|
|
71
|
-
args1,
|
|
72
|
-
args2,
|
|
73
|
-
args3,
|
|
74
|
-
args4,
|
|
75
|
-
args5,
|
|
76
|
-
args6,
|
|
77
|
-
args7,
|
|
78
|
-
args8,
|
|
79
|
-
args9,
|
|
80
|
-
args10,
|
|
81
|
-
);
|
|
82
|
-
},
|
|
83
|
-
eventArgs.FWEvent.target,
|
|
84
|
-
);
|
|
85
|
-
this.eventMap.set(eventArgs.eventName, eventArgs.FWEvent);
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
if (Array.isArray(args)) {
|
|
90
|
-
args.forEach((v) => register(v));
|
|
91
|
-
} else {
|
|
92
|
-
register(args);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
17
|
|
|
96
18
|
/** 暂停事件 */
|
|
97
19
|
pauseEvent(target: FW.TargetType) {
|
|
@@ -114,29 +36,55 @@ export default class FWUiManager extends FWManager implements FW.UiManager {
|
|
|
114
36
|
this.eventMap.forEach((v) => FW.Entry.evtMgr?.targetResume(v));
|
|
115
37
|
}
|
|
116
38
|
|
|
117
|
-
unRegisterEvent(args: FW.
|
|
118
|
-
|
|
119
|
-
|
|
39
|
+
unRegisterEvent(args: FW.RegisterArgs) {
|
|
40
|
+
this.eventMap.forEach((evt) => {
|
|
41
|
+
if (args.target === evt.target) {
|
|
42
|
+
if (this.eventMap.has(evt.uniqueId)) {
|
|
43
|
+
this.eventMap.delete(evt.uniqueId);
|
|
44
|
+
FW.Entry.evtMgr.unRegister(evt.event.eventName, evt.target);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
});
|
|
120
48
|
}
|
|
121
49
|
|
|
122
50
|
unRegisterAll() {
|
|
51
|
+
this.eventMap.forEach((evt) => this.unRegisterTarget(evt.target));
|
|
123
52
|
this.eventMap.clear();
|
|
124
53
|
}
|
|
125
54
|
|
|
126
55
|
unRegisterTarget(target: FW.TargetType) {
|
|
127
|
-
this.eventMap.forEach((
|
|
128
|
-
if (
|
|
56
|
+
this.eventMap.forEach((evt) => {
|
|
57
|
+
if (evt.target == target) {
|
|
58
|
+
FW.Entry.evtMgr?.targetOff(evt.target);
|
|
59
|
+
this.eventMap.delete(evt.uniqueId);
|
|
60
|
+
}
|
|
129
61
|
});
|
|
130
62
|
}
|
|
131
63
|
|
|
132
64
|
hasRegister(eventName: string, target: FW.TargetType): boolean {
|
|
133
65
|
let has = false;
|
|
134
66
|
this.eventMap.forEach((v, key) => {
|
|
135
|
-
if (v.target == target &&
|
|
67
|
+
if (v.target == target && v.event.eventName == eventName) has = true;
|
|
136
68
|
});
|
|
137
69
|
return has;
|
|
138
70
|
}
|
|
139
71
|
|
|
72
|
+
find(path: string, rootNode: cc.Node): cc.Node | null {
|
|
73
|
+
if (!cc.isValid(rootNode)) {
|
|
74
|
+
FWLog.error(`查找节点失败: ${path}, 根节点无效`);
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const node = searchChild(rootNode, path);
|
|
79
|
+
|
|
80
|
+
if (!cc.isValid(node)) {
|
|
81
|
+
FWLog.warn(`未找到节点: ${path}`);
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return node;
|
|
86
|
+
}
|
|
87
|
+
|
|
140
88
|
buttonEnable(target: FW.TargetType) {
|
|
141
89
|
this.eventMap.forEach((v) => {
|
|
142
90
|
const node = v.target as cc.Node;
|
|
@@ -149,6 +97,7 @@ export default class FWUiManager extends FWManager implements FW.UiManager {
|
|
|
149
97
|
}
|
|
150
98
|
});
|
|
151
99
|
}
|
|
100
|
+
|
|
152
101
|
buttonDisable(target: FW.TargetType) {
|
|
153
102
|
this.eventMap.forEach((v) => {
|
|
154
103
|
const node = v.target as cc.Node;
|
|
@@ -161,4 +110,95 @@ export default class FWUiManager extends FWManager implements FW.UiManager {
|
|
|
161
110
|
}
|
|
162
111
|
});
|
|
163
112
|
}
|
|
113
|
+
|
|
114
|
+
register(args: FW.RegisterArgs) {
|
|
115
|
+
if (!args.target) {
|
|
116
|
+
FWLog.error("注册事件失败,目标为空!");
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
this.uniqueId++;
|
|
121
|
+
|
|
122
|
+
if (args.CCEvent) {
|
|
123
|
+
args.CCEvent.forEach((evt) => {
|
|
124
|
+
if (evt.target instanceof cc.Node && cc.isValid(evt.target)) {
|
|
125
|
+
evt.target.on(
|
|
126
|
+
evt.eventName || cc.Node.EventType.TOUCH_END,
|
|
127
|
+
(e: cc.Event.EventTouch, c?: string) => {
|
|
128
|
+
if (evt.enable === undefined) {
|
|
129
|
+
evt.enable = true;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
if (!evt.enable) return;
|
|
133
|
+
|
|
134
|
+
/** 检测触发间隔 */
|
|
135
|
+
if (
|
|
136
|
+
Date.now() - evt.lastResponseTimestamp <
|
|
137
|
+
evt.responseInterval
|
|
138
|
+
) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
const button = evt.target.getComponent(cc.Button);
|
|
143
|
+
if (button && !button.interactable) return;
|
|
144
|
+
|
|
145
|
+
evt.lastResponseTimestamp = Date.now();
|
|
146
|
+
evt.cb?.bind(args.target)?.(e, c);
|
|
147
|
+
},
|
|
148
|
+
args.target
|
|
149
|
+
);
|
|
150
|
+
this.eventMap.set(this.uniqueId, {
|
|
151
|
+
uniqueId: this.uniqueId,
|
|
152
|
+
target: args.target,
|
|
153
|
+
event: evt,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
} else if (args.FWEvent) {
|
|
158
|
+
args.FWEvent.forEach((evt) => {
|
|
159
|
+
FW.Entry.evtMgr?.register(
|
|
160
|
+
evt.eventName,
|
|
161
|
+
(
|
|
162
|
+
args1?: FW.EventManagerArgs,
|
|
163
|
+
args2?: FW.EventManagerArgs,
|
|
164
|
+
args3?: FW.EventManagerArgs,
|
|
165
|
+
args4?: FW.EventManagerArgs,
|
|
166
|
+
args5?: FW.EventManagerArgs,
|
|
167
|
+
args6?: FW.EventManagerArgs,
|
|
168
|
+
args7?: FW.EventManagerArgs,
|
|
169
|
+
args8?: FW.EventManagerArgs,
|
|
170
|
+
args9?: FW.EventManagerArgs,
|
|
171
|
+
args10?: FW.EventManagerArgs
|
|
172
|
+
) => {
|
|
173
|
+
if (
|
|
174
|
+
Date.now() - evt.lastResponseTimestamp <
|
|
175
|
+
(evt.responseInterval || 0)
|
|
176
|
+
) {
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
evt.lastResponseTimestamp = Date.now();
|
|
180
|
+
evt.cb?.bind(args.target)(
|
|
181
|
+
args1,
|
|
182
|
+
args2,
|
|
183
|
+
args3,
|
|
184
|
+
args4,
|
|
185
|
+
args5,
|
|
186
|
+
args6,
|
|
187
|
+
args7,
|
|
188
|
+
args8,
|
|
189
|
+
args9,
|
|
190
|
+
args10
|
|
191
|
+
);
|
|
192
|
+
},
|
|
193
|
+
args.target
|
|
194
|
+
);
|
|
195
|
+
|
|
196
|
+
this.eventMap.set(this.uniqueId, {
|
|
197
|
+
uniqueId: this.uniqueId,
|
|
198
|
+
target: args.target,
|
|
199
|
+
event: evt,
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
}
|
|
164
204
|
}
|
package/package.json
CHANGED
package/service/http/FWHttp.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { FWSystemConfig } from
|
|
2
|
-
import { FWSystemDefine } from
|
|
3
|
-
import FWLog from
|
|
4
|
-
import FWService from
|
|
1
|
+
import { FWSystemConfig } from "../../config/FWSystemConfig";
|
|
2
|
+
import { FWSystemDefine } from "../../define/FWSystemDefine";
|
|
3
|
+
import FWLog from "../../log/FWLog";
|
|
4
|
+
import FWService from "../FWService";
|
|
5
5
|
|
|
6
6
|
export default class FWHttp extends FWService {
|
|
7
|
+
public initialize() {}
|
|
7
8
|
public onDestroy(): void {}
|
|
8
9
|
protected onRestart(): void {}
|
|
9
10
|
|
|
@@ -11,18 +12,30 @@ export default class FWHttp extends FWService {
|
|
|
11
12
|
url: string,
|
|
12
13
|
params?: string,
|
|
13
14
|
cb?: (response: string) => void,
|
|
14
|
-
tag?: string
|
|
15
|
+
tag?: string
|
|
15
16
|
): Promise<string> {
|
|
16
|
-
return this.process(
|
|
17
|
+
return this.process(
|
|
18
|
+
url,
|
|
19
|
+
params,
|
|
20
|
+
cb,
|
|
21
|
+
tag,
|
|
22
|
+
FWSystemDefine.FWHttpRequestType.GET
|
|
23
|
+
);
|
|
17
24
|
}
|
|
18
25
|
|
|
19
26
|
protected async postMessage(
|
|
20
27
|
url: string,
|
|
21
28
|
params?: string,
|
|
22
29
|
cb?: (response: string) => void,
|
|
23
|
-
tag?: string
|
|
30
|
+
tag?: string
|
|
24
31
|
): Promise<string> {
|
|
25
|
-
return this.process(
|
|
32
|
+
return this.process(
|
|
33
|
+
url,
|
|
34
|
+
params,
|
|
35
|
+
cb,
|
|
36
|
+
tag,
|
|
37
|
+
FWSystemDefine.FWHttpRequestType.POST
|
|
38
|
+
);
|
|
26
39
|
}
|
|
27
40
|
|
|
28
41
|
private async process(
|
|
@@ -30,48 +43,54 @@ export default class FWHttp extends FWService {
|
|
|
30
43
|
params: string,
|
|
31
44
|
cb: (response: any) => void,
|
|
32
45
|
tag: string,
|
|
33
|
-
type: FWSystemDefine.FWHttpRequestType
|
|
46
|
+
type: FWSystemDefine.FWHttpRequestType
|
|
34
47
|
): Promise<string> {
|
|
35
48
|
let xhr: XMLHttpRequest;
|
|
36
49
|
|
|
37
|
-
const promiseProxy: FW.PromiseProxy<string> =
|
|
38
|
-
(
|
|
39
|
-
|
|
50
|
+
const promiseProxy: FW.PromiseProxy<string> =
|
|
51
|
+
FW.Entry.promiseMgr.execute<string>(
|
|
52
|
+
(resolve, reject, signal, reason) => {
|
|
53
|
+
xhr = new XMLHttpRequest();
|
|
40
54
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
55
|
+
xhr.onreadystatechange = () => {
|
|
56
|
+
if (xhr.readyState == 4 && xhr.status === 200) {
|
|
57
|
+
cb?.(xhr.response);
|
|
58
|
+
resolve(xhr.response);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
47
61
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
62
|
+
xhr.onerror = (err: any) => {
|
|
63
|
+
FWLog.error(err);
|
|
64
|
+
this.onError?.(err);
|
|
65
|
+
reject(`http request error:${err}`);
|
|
66
|
+
};
|
|
53
67
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
68
|
+
xhr.ontimeout = () => {
|
|
69
|
+
this.onTimeout?.();
|
|
70
|
+
reject(`http request timeout!`);
|
|
71
|
+
};
|
|
58
72
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
...FWSystemConfig.PromiseConfig.http,
|
|
64
|
-
retryCondition(error, retryCount) {
|
|
65
|
-
return xhr.readyState != 4 || (xhr.status !== 200 && retryCount < 3);
|
|
73
|
+
xhr.open(type, url, true);
|
|
74
|
+
xhr.send(params);
|
|
66
75
|
},
|
|
67
|
-
|
|
68
|
-
|
|
76
|
+
{
|
|
77
|
+
...FWSystemConfig.PromiseConfig.http,
|
|
78
|
+
retryCondition(error, retryCount) {
|
|
79
|
+
return (
|
|
80
|
+
xhr.readyState != 4 || (xhr.status !== 200 && retryCount < 3)
|
|
81
|
+
);
|
|
82
|
+
},
|
|
83
|
+
}
|
|
84
|
+
);
|
|
69
85
|
|
|
70
86
|
promiseProxy.addAbortEventListener(() => {
|
|
71
87
|
xhr.abort();
|
|
72
88
|
});
|
|
73
89
|
|
|
74
|
-
return await this.invoke(
|
|
90
|
+
return await this.invoke(
|
|
91
|
+
promiseProxy.promise,
|
|
92
|
+
tag ? `http request ->${tag}` : ""
|
|
93
|
+
);
|
|
75
94
|
}
|
|
76
95
|
|
|
77
96
|
onError?(err: any);
|