drgame-cc 1.0.45 → 1.0.47
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/drres/focus/focus_1/gesture.atlas +34 -0
- package/drres/focus/focus_1/gesture.atlas.meta +6 -0
- package/drres/focus/focus_1/gesture.json +1 -0
- package/drres/focus/focus_1/gesture.json.meta +10 -0
- package/drres/focus/focus_1/gesture.png +0 -0
- package/drres/{icons/pointer-yellow-60.png.meta → focus/focus_1/gesture.png.meta} +14 -14
- package/drres/focus/focus_1.meta +13 -0
- package/drres/focus/focus_2/gesture.atlas +41 -0
- package/drres/focus/focus_2/gesture.atlas.meta +6 -0
- package/drres/focus/focus_2/gesture.json +1 -0
- package/drres/focus/focus_2/gesture.json.meta +10 -0
- package/drres/focus/focus_2/gesture.png +0 -0
- package/drres/{icons/pointer-blue-60.png.meta → focus/focus_2/gesture.png.meta} +13 -13
- package/drres/focus/focus_2.meta +13 -0
- package/drres/focus/focus_3/gesture.atlas +34 -0
- package/drres/focus/focus_3/gesture.atlas.meta +6 -0
- package/drres/focus/focus_3/gesture.json +1 -0
- package/drres/focus/focus_3/gesture.json.meta +10 -0
- package/drres/focus/focus_3/gesture.png +0 -0
- package/drres/{icons/pointer-pink-60.png.meta → focus/focus_3/gesture.png.meta} +12 -12
- package/drres/focus/focus_3.meta +13 -0
- package/drres/focus/focus_4/gesture.atlas +20 -0
- package/drres/focus/focus_4/gesture.atlas.meta +6 -0
- package/drres/focus/focus_4/gesture.json +1 -0
- package/drres/focus/focus_4/gesture.json.meta +10 -0
- package/drres/focus/focus_4/gesture.png +0 -0
- package/drres/focus/focus_4/gesture.png.meta +38 -0
- package/drres/focus/focus_4.meta +13 -0
- package/drres/focus.meta +13 -0
- package/drres/prefab/ExitWin.prefab +2 -2
- package/drres/prefab/Toast.prefab +378 -378
- package/drscript/{ad/AdManager.ts.meta → BtnExtra.ts.meta} +1 -1
- package/drscript/Define.ts +17 -2
- package/drscript/{ad/AdSlot.ts.meta → Define.ts.meta} +1 -1
- package/drscript/{ad/AggregateAdProvider.ts.meta → ExitWin.ts.meta} +1 -1
- package/drscript/GameAnalytics.ts +37 -118
- package/drscript/{ad/IAdProvider.ts.meta → GameAnalytics.ts.meta} +1 -1
- package/drscript/HelperWin.ts.meta +10 -0
- package/drscript/Info.ts.meta +10 -0
- package/drscript/InternalUitl.ts.meta +10 -0
- package/drscript/KeyAdapter.ts +133 -0
- package/drscript/KeyAdapter.ts.meta +10 -0
- package/drscript/Loader.ts.meta +10 -0
- package/drscript/PlatformAdapter.ts +178 -192
- package/drscript/PlatformAdapter.ts.meta +10 -0
- package/drscript/README.md +91 -805
- package/drscript/README.md.meta +6 -0
- package/drscript/UIAdapter.ts +324 -0
- package/drscript/UIAdapter.ts.meta +10 -0
- package/drscript/WebBridge.ts +1 -1
- package/drscript/WebBridge.ts.meta +10 -0
- package/drscript/ad-sdk/reporters/superset-lewo.js +6 -0
- package/drscript/ad-sdk/types/enums.d.ts +1 -0
- package/drscript/ad-sdk.meta +13 -0
- package/drscript/ad.meta +13 -0
- package/drscript/component/AlertTip.ts +25 -0
- package/drscript/component/AlertTip.ts.meta +10 -0
- package/drscript/component/BtnExtra.ts +17 -0
- package/drscript/component/BtnExtra.ts.meta +10 -0
- package/drscript/{ExitWin.ts → component/ExitWin.ts} +6 -8
- package/drscript/component/ExitWin.ts.meta +10 -0
- package/drscript/{HelperWin.ts → component/HelperWin.ts} +5 -19
- package/drscript/component/HelperWin.ts.meta +10 -0
- package/drscript/component.meta +13 -0
- package/drscript/config.meta +13 -0
- package/drscript/core.meta +13 -0
- package/drscript/focus/FocusItem.ts +1 -19
- package/drscript/focus/FocusManager.ts +157 -198
- package/drscript/focus/FocusVisualLayer.ts +74 -163
- package/drscript/focus.meta +13 -0
- package/drscript/input/KeyboardMove.ts +40 -11
- package/drscript/input/KeyboardMove.ts.meta +10 -0
- package/drscript/input.meta +13 -0
- package/drscript/interface.meta +13 -0
- package/drscript/pinyin.meta +13 -0
- package/drscript/toast.meta +13 -0
- package/drscript/virtualgamepad.meta +13 -0
- package/package.json +1 -1
- package/drres/config/default.json +0 -108
- package/drres/config/default.json.meta +0 -6
- package/drres/icons/pointer-blue-60.png +0 -0
- package/drres/icons/pointer-pink-60.png +0 -0
- package/drres/icons/pointer-white-60.png +0 -0
- package/drres/icons/pointer-yellow-60.png +0 -0
- package/drscript/Info.ts +0 -78
- package/drscript/InternalUitl.ts +0 -65
- package/drscript/ad/AdManager.ts +0 -174
- package/drscript/ad/AdSlot.ts +0 -44
- package/drscript/ad/AggregateAdProvider.ts +0 -149
- package/drscript/ad/IAdProvider.ts +0 -39
- package/drscript/ad/MockAdProvider.ts +0 -36
- package/drscript/ad/MockAdProvider.ts.meta +0 -10
- package/drscript/ad/SelfAdProvider.ts +0 -41
- package/drscript/ad/SelfAdProvider.ts.meta +0 -10
- package/drscript/config/TvUiConfig.ts +0 -155
- package/drscript/config/TvUiConfig.ts.meta +0 -10
- package/drscript/config/TvUiConfigManager.ts +0 -133
- package/drscript/config/TvUiConfigManager.ts.meta +0 -10
- package/drscript/core/BackManager.ts +0 -38
- package/drscript/core/BackManager.ts.meta +0 -10
- package/drscript/core/NativeBridge.ts +0 -137
- package/drscript/core/NativeBridge.ts.meta +0 -10
- package/drscript/core/TvUi.ts +0 -69
- package/drscript/core/TvUi.ts.meta +0 -10
- package/drscript/core/TvUiRoot.ts +0 -137
- package/drscript/core/TvUiRoot.ts.meta +0 -10
- package/drscript/icon/IconConfig.ts +0 -7
- package/drscript/icon/IconConfig.ts.meta +0 -10
- package/drscript/icon/IconManager.ts +0 -97
- package/drscript/icon/IconManager.ts.meta +0 -10
- package/drscript/input/KeyCodeAdapter.ts +0 -23
- package/drscript/input/RemoteInputManager.ts +0 -105
- package/drscript/interface/ILobbyBridge.ts +0 -5
- package/drscript/toast/ToastComponent.ts +0 -35
- package/drscript/toast/ToastComponent.ts.meta +0 -10
- package/drscript/toast/ToastManager.ts +0 -66
- package/drscript/toast/ToastManager.ts.meta +0 -10
- package/drscript/toast/TvExitConfirmDialog.ts +0 -334
- package/drscript/toast/TvExitConfirmDialog.ts.meta +0 -10
- package/drscript/toast/UIFunctions.ts +0 -150
- package/drscript/toast/UIFunctions.ts.meta +0 -10
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
import FocusManager from "./focus/FocusManager";
|
|
2
|
+
import FocusVisualLayer from "./focus/FocusVisualLayer";
|
|
3
|
+
import { AdSdk } from "./ad-sdk/ad-sdk";
|
|
4
|
+
import { WebBridge } from "./WebBridge";
|
|
5
|
+
import { BtnExtra } from "./component/BtnExtra";
|
|
6
|
+
import AlertTip from "./component/AlertTip";
|
|
7
|
+
import { Loader } from "./Loader";
|
|
8
|
+
import { KeyAdapter } from "./KeyAdapter";
|
|
9
|
+
|
|
10
|
+
declare const global: any;
|
|
11
|
+
|
|
12
|
+
/** UI 适配 - 窗口/场景栈、Back 管理、Toast、焦点视觉层等界面基础设施 */
|
|
13
|
+
export class UIAdapter {
|
|
14
|
+
/** 焦点管理快捷入口 */
|
|
15
|
+
public static focus = FocusManager;
|
|
16
|
+
|
|
17
|
+
// ---- 内部配置 ----
|
|
18
|
+
private static _focusZIndex: number = 800;
|
|
19
|
+
private static _focusEnabled: boolean = true;
|
|
20
|
+
|
|
21
|
+
private static visualLayer: FocusVisualLayer | null = null;
|
|
22
|
+
|
|
23
|
+
// ---- 桥接 / 状态 ----
|
|
24
|
+
public static webBridge: WebBridge;
|
|
25
|
+
static _isVIP: boolean = false;
|
|
26
|
+
static _zhName: string = "";
|
|
27
|
+
static toastPool: cc.NodePool;
|
|
28
|
+
static prefab: cc.Prefab;
|
|
29
|
+
|
|
30
|
+
// ---- 场景栈(只存原生场景名)----
|
|
31
|
+
static sceneStack: string[] = [];
|
|
32
|
+
|
|
33
|
+
// ---- 版本号 ----
|
|
34
|
+
static readonly version = "1.0.36";
|
|
35
|
+
|
|
36
|
+
// ---- Back 管理 ----
|
|
37
|
+
private static backHandlers: Array<() => boolean | void> = [];
|
|
38
|
+
private static backFallback: (() => boolean | void) | null = null;
|
|
39
|
+
|
|
40
|
+
public static back = {
|
|
41
|
+
push: (handler: () => boolean | void) => {
|
|
42
|
+
if (!handler) return;
|
|
43
|
+
UIAdapter.removeBackHandler(handler);
|
|
44
|
+
UIAdapter.backHandlers.push(handler);
|
|
45
|
+
},
|
|
46
|
+
remove: (handler: () => boolean | void) => { UIAdapter.removeBackHandler(handler); },
|
|
47
|
+
setFallback: (handler: (() => boolean | void) | null) => { UIAdapter.backFallback = handler; },
|
|
48
|
+
reset: () => { UIAdapter.backHandlers = []; UIAdapter.backFallback = null; },
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
private static removeBackHandler(handler: () => boolean | void) {
|
|
52
|
+
for (let i = UIAdapter.backHandlers.length - 1; i >= 0; i--) {
|
|
53
|
+
if (UIAdapter.backHandlers[i] === handler) UIAdapter.backHandlers.splice(i, 1);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
private static handleBack(): boolean {
|
|
58
|
+
for (let i = UIAdapter.backHandlers.length - 1; i >= 0; i--) {
|
|
59
|
+
const h = UIAdapter.backHandlers[i];
|
|
60
|
+
if (!h) continue;
|
|
61
|
+
if (h() !== false) return true;
|
|
62
|
+
}
|
|
63
|
+
if (UIAdapter.backFallback) return UIAdapter.backFallback() !== false;
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// ========================================================================
|
|
68
|
+
// 初始化
|
|
69
|
+
// ========================================================================
|
|
70
|
+
public static init(options?: {
|
|
71
|
+
focusZIndex?: number;
|
|
72
|
+
focusEnabled?: boolean;
|
|
73
|
+
enableInput?: boolean;
|
|
74
|
+
enableLifecycle?: boolean;
|
|
75
|
+
}) {
|
|
76
|
+
if (UIAdapter.visualLayer) return;
|
|
77
|
+
|
|
78
|
+
if (options) {
|
|
79
|
+
if (options.focusZIndex !== undefined) UIAdapter._focusZIndex = options.focusZIndex;
|
|
80
|
+
if (options.focusEnabled !== undefined) UIAdapter._focusEnabled = options.focusEnabled;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// 同步给 FocusVisualLayer
|
|
84
|
+
FocusVisualLayer.setFocusZIndex(UIAdapter._focusZIndex);
|
|
85
|
+
|
|
86
|
+
// 焦点视觉层
|
|
87
|
+
if (UIAdapter._focusEnabled) {
|
|
88
|
+
const scene = cc.director.getScene();
|
|
89
|
+
UIAdapter.visualLayer = FocusVisualLayer.create(scene);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// 输入(委托给 KeyAdapter)
|
|
93
|
+
if (options?.enableInput !== false) {
|
|
94
|
+
KeyAdapter.onBack = () => UIAdapter.handleBack();
|
|
95
|
+
KeyAdapter.init();
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// 生命周期
|
|
99
|
+
if (options?.enableLifecycle !== false) {
|
|
100
|
+
cc.game.on(cc.game.EVENT_HIDE, UIAdapter.onGameHide, UIAdapter);
|
|
101
|
+
cc.game.on(cc.game.EVENT_SHOW, UIAdapter.onGameShow, UIAdapter);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
public static destroy() {
|
|
106
|
+
cc.game.off(cc.game.EVENT_HIDE, UIAdapter.onGameHide, UIAdapter);
|
|
107
|
+
cc.game.off(cc.game.EVENT_SHOW, UIAdapter.onGameShow, UIAdapter);
|
|
108
|
+
FocusManager.reset();
|
|
109
|
+
KeyAdapter.destroy();
|
|
110
|
+
UIAdapter.backHandlers = [];
|
|
111
|
+
UIAdapter.backFallback = null;
|
|
112
|
+
if (UIAdapter.visualLayer && UIAdapter.visualLayer.node) {
|
|
113
|
+
cc.game?.removePersistRootNode?.(UIAdapter.visualLayer.node);
|
|
114
|
+
UIAdapter.visualLayer.node.destroy();
|
|
115
|
+
}
|
|
116
|
+
UIAdapter.visualLayer = null;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// ========================================================================
|
|
120
|
+
// 内部实现(供 PlatformAdapter 委托调用)
|
|
121
|
+
// ========================================================================
|
|
122
|
+
|
|
123
|
+
static loadPrefab(path: string): Promise<cc.Prefab> {
|
|
124
|
+
return new Promise((resolve, reject) => {
|
|
125
|
+
cc.loader.loadRes(path, cc.Prefab, (err, prefab) => {
|
|
126
|
+
if (err) reject(err);
|
|
127
|
+
else resolve(prefab);
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
static showTip(text: string, dur = 1500) {
|
|
133
|
+
if (!UIAdapter.toastPool || !UIAdapter.prefab) return;
|
|
134
|
+
let node = UIAdapter.toastPool.get();
|
|
135
|
+
let toastComp: AlertTip | null = null;
|
|
136
|
+
if (node == null) {
|
|
137
|
+
node = cc.instantiate(UIAdapter.prefab);
|
|
138
|
+
toastComp = node.getComponent(AlertTip);
|
|
139
|
+
} else {
|
|
140
|
+
toastComp = node.getComponent(AlertTip);
|
|
141
|
+
}
|
|
142
|
+
if (node.parent == null) {
|
|
143
|
+
cc.director.getScene().addChild(node, cc.macro.MAX_ZINDEX);
|
|
144
|
+
}
|
|
145
|
+
node.setPosition(cc.v2(cc.winSize.width / 2, cc.winSize.height / 2));
|
|
146
|
+
|
|
147
|
+
if (toastComp) toastComp.show(text);
|
|
148
|
+
setTimeout(() => {
|
|
149
|
+
if (toastComp) {
|
|
150
|
+
toastComp.hide(() => {
|
|
151
|
+
if (node && node.isValid) {
|
|
152
|
+
UIAdapter.toastPool.put(node);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}, dur);
|
|
157
|
+
return toastComp;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/** 显示预制体场景(压入预制体场景栈,返回键可回溯) */
|
|
161
|
+
static showScene(scene: cc.Node, onBack?: () => boolean | void) {
|
|
162
|
+
let currentTop = UIAdapter.focus.getTopNodeScope();
|
|
163
|
+
if (currentTop && currentTop.nodeType === "scene" && currentTop.node && currentTop.node !== scene && currentTop.node.isValid) {
|
|
164
|
+
currentTop.node.active = false;
|
|
165
|
+
}
|
|
166
|
+
scene.active = true;
|
|
167
|
+
// 先切换 scope,确保 activeScopeId 正确
|
|
168
|
+
UIAdapter.focus.pushScope(scene.uuid, {
|
|
169
|
+
node: scene,
|
|
170
|
+
nodeType: "scene",
|
|
171
|
+
onBack: onBack,
|
|
172
|
+
skipEnsureFocus: true
|
|
173
|
+
});
|
|
174
|
+
// 再注册按钮,registerButtons 内部会调用 ensureFocus
|
|
175
|
+
UIAdapter.focus.registerButtons(scene);
|
|
176
|
+
UIAdapter.findBtnExtra(scene);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/** 关闭预制体场景(从栈中移除,不销毁) */
|
|
180
|
+
static hideScene(scene: cc.Node) {
|
|
181
|
+
UIAdapter.focus.removeScope(scene);
|
|
182
|
+
scene.active = false;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/** 打开界面注册导航按钮 */
|
|
186
|
+
static showWindow(window: cc.Node, onBack?: () => boolean | void) {
|
|
187
|
+
// 先切换 scope,确保 activeScopeId 正确
|
|
188
|
+
UIAdapter.focus.pushScope(window.uuid, {
|
|
189
|
+
node: window,
|
|
190
|
+
nodeType: "window",
|
|
191
|
+
onBack: onBack,
|
|
192
|
+
skipEnsureFocus: true
|
|
193
|
+
});
|
|
194
|
+
// 再注册按钮,registerButtons 内部会调用 ensureFocus
|
|
195
|
+
UIAdapter.focus.registerButtons(window);
|
|
196
|
+
UIAdapter.findBtnExtra(window);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/** 关闭界面取消注册按钮事件 */
|
|
200
|
+
static hideWindow(window: cc.Node) {
|
|
201
|
+
UIAdapter.focus.removeScope(window);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/** 刷新界面按钮事件 */
|
|
205
|
+
static refreshFocus(window: cc.Node) {
|
|
206
|
+
UIAdapter.focus.registerButtons(window);
|
|
207
|
+
UIAdapter.findBtnExtra(window);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/** 返回键处理逻辑 */
|
|
211
|
+
static backHandler(): boolean {
|
|
212
|
+
let top = UIAdapter.focus.getTopNodeScope();
|
|
213
|
+
if (top && top.node) {
|
|
214
|
+
let node = top.node;
|
|
215
|
+
if (!node.isValid) {
|
|
216
|
+
UIAdapter.focus.popScope(top.scopeId);
|
|
217
|
+
return true;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// 1. 优先用自定义 onBack
|
|
221
|
+
if (top.onBack) {
|
|
222
|
+
let handled = top.onBack() !== false;
|
|
223
|
+
if (handled) {
|
|
224
|
+
UIAdapter.focus.removeScope(node);
|
|
225
|
+
}
|
|
226
|
+
return true;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
if (top.nodeType === "window") {
|
|
230
|
+
UIAdapter.focus.removeScope(node);
|
|
231
|
+
node.destroy();
|
|
232
|
+
} else {
|
|
233
|
+
// 检查是否是最后一个场景
|
|
234
|
+
let scopes = UIAdapter.focus.getScopes();
|
|
235
|
+
let hasPrev = false;
|
|
236
|
+
for (let i = scopes.length - 1; i >= 1; i--) {
|
|
237
|
+
if (scopes[i].node && scopes[i].scopeId !== top.scopeId) {
|
|
238
|
+
hasPrev = true;
|
|
239
|
+
break;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
if (!hasPrev) {
|
|
243
|
+
// 最后一个场景,直接弹出退出确认
|
|
244
|
+
UIAdapter.showExitWin();
|
|
245
|
+
return true;
|
|
246
|
+
}
|
|
247
|
+
// 不是最后一个场景,正常关闭
|
|
248
|
+
UIAdapter.focus.removeScope(node);
|
|
249
|
+
node.active = false;
|
|
250
|
+
let prev = UIAdapter.focus.getTopNodeScope();
|
|
251
|
+
if (prev && prev.node && prev.node.isValid) {
|
|
252
|
+
prev.node.active = true;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
return true;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
// 没有界面节点,走原生场景栈
|
|
259
|
+
if (UIAdapter.sceneStack.length > 0) {
|
|
260
|
+
let prevScene = UIAdapter.sceneStack.pop();
|
|
261
|
+
cc.director.loadScene(prevScene);
|
|
262
|
+
return true;
|
|
263
|
+
}
|
|
264
|
+
UIAdapter.showExitWin();
|
|
265
|
+
return true;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
static async showExitWin() {
|
|
269
|
+
let exitPfb = await Loader.loadRes('drres/prefab/ExitWin', cc.Prefab);
|
|
270
|
+
let exitWin = cc.instantiate(exitPfb);
|
|
271
|
+
exitWin.parent = cc.director.getScene();
|
|
272
|
+
exitWin.setPosition(cc.v2(cc.winSize.width / 2, cc.winSize.height / 2));
|
|
273
|
+
|
|
274
|
+
// 直接注册焦点,不依赖 ExitWin.onEnable 的间接调用
|
|
275
|
+
UIAdapter.focus.pushScope(exitWin.uuid, {
|
|
276
|
+
node: exitWin,
|
|
277
|
+
nodeType: "window",
|
|
278
|
+
onBack: () => {
|
|
279
|
+
if (exitWin && exitWin.isValid) exitWin.destroy();
|
|
280
|
+
},
|
|
281
|
+
skipEnsureFocus: true
|
|
282
|
+
});
|
|
283
|
+
UIAdapter.focus.registerButtons(exitWin);
|
|
284
|
+
UIAdapter.findBtnExtra(exitWin);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/** 拦截 loadScene 自动记录场景栈 */
|
|
288
|
+
static hookLoadScene() {
|
|
289
|
+
const origLoadScene = cc.director.loadScene.bind(cc.director);
|
|
290
|
+
cc.director.loadScene = (sceneName: string, onLaunched?: () => void) => {
|
|
291
|
+
let currentScene = cc.director.getScene();
|
|
292
|
+
if (currentScene && currentScene.name && currentScene.name !== sceneName) {
|
|
293
|
+
UIAdapter.sceneStack.push(currentScene.name);
|
|
294
|
+
}
|
|
295
|
+
return origLoadScene(sceneName, onLaunched);
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
private static findBtnExtra(node: cc.Node) {
|
|
300
|
+
for (let i = 0; i < node.children.length; i++) {
|
|
301
|
+
let child = node.children[i];
|
|
302
|
+
if (child.isValid === false || !child.activeInHierarchy) continue;
|
|
303
|
+
let btnExtra = child.getComponent(BtnExtra);
|
|
304
|
+
if (btnExtra) {
|
|
305
|
+
let sprite = child.getComponent(cc.Sprite);
|
|
306
|
+
UIAdapter.focus.register(child, {
|
|
307
|
+
onFocus: () => {
|
|
308
|
+
if (sprite) sprite.spriteFrame = btnExtra.hoverSprite;
|
|
309
|
+
},
|
|
310
|
+
onBlur: () => {
|
|
311
|
+
if (sprite) sprite.spriteFrame = btnExtra.normalSprite;
|
|
312
|
+
}
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
UIAdapter.findBtnExtra(child);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
// ========================================================================
|
|
320
|
+
// 内部
|
|
321
|
+
// ========================================================================
|
|
322
|
+
private static onGameHide() { AdSdk.onGamePause(); }
|
|
323
|
+
private static onGameShow() { AdSdk.onGameResume(); }
|
|
324
|
+
}
|
package/drscript/WebBridge.ts
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
|
|
2
|
+
if (typeof globalThis === 'undefined') {
|
|
3
|
+
if (typeof self !== 'undefined') self.globalThis = self;
|
|
4
|
+
else if (typeof window !== 'undefined') window.globalThis = window;
|
|
5
|
+
else if (typeof global !== 'undefined') global.globalThis = global;
|
|
6
|
+
}
|
|
1
7
|
var supersetLewo = (function () {
|
|
2
8
|
// ========== 私有常量与缓存(闭包私有,外部不可访问) ==========
|
|
3
9
|
// 设备ID本地存储Key:localStorage + cookie共用
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"ver": "1.1.3",
|
|
3
|
+
"uuid": "822091a4-f8de-4991-957f-1506ddb6e4e6",
|
|
4
|
+
"importer": "folder",
|
|
5
|
+
"isBundle": false,
|
|
6
|
+
"bundleName": "",
|
|
7
|
+
"priority": 1,
|
|
8
|
+
"compressionType": {},
|
|
9
|
+
"optimizeHotUpdate": {},
|
|
10
|
+
"inlineSpriteFrames": {},
|
|
11
|
+
"isRemoteBundle": {},
|
|
12
|
+
"subMetas": {}
|
|
13
|
+
}
|
package/drscript/ad.meta
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"ver": "1.1.3",
|
|
3
|
+
"uuid": "5d7eb661-f97d-4152-bce2-5dc55e4d8cbc",
|
|
4
|
+
"importer": "folder",
|
|
5
|
+
"isBundle": false,
|
|
6
|
+
"bundleName": "",
|
|
7
|
+
"priority": 1,
|
|
8
|
+
"compressionType": {},
|
|
9
|
+
"optimizeHotUpdate": {},
|
|
10
|
+
"inlineSpriteFrames": {},
|
|
11
|
+
"isRemoteBundle": {},
|
|
12
|
+
"subMetas": {}
|
|
13
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const { ccclass, property } = cc._decorator;
|
|
2
|
+
|
|
3
|
+
@ccclass
|
|
4
|
+
export default class AlertTip extends cc.Component {
|
|
5
|
+
@property(cc.Label)
|
|
6
|
+
label: cc.Label = null;
|
|
7
|
+
|
|
8
|
+
onLoad() {
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
start() {
|
|
12
|
+
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
hide(callback): any {
|
|
16
|
+
this.node.active = false;
|
|
17
|
+
if (callback) {
|
|
18
|
+
callback(this);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
show(text: any): any {
|
|
22
|
+
this.label.string = text;
|
|
23
|
+
}
|
|
24
|
+
// update (dt) {}
|
|
25
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
|
|
2
|
+
const { ccclass, property } = cc._decorator;
|
|
3
|
+
|
|
4
|
+
@ccclass('BtnExtra')
|
|
5
|
+
export class BtnExtra extends cc.Component {
|
|
6
|
+
@property({
|
|
7
|
+
type: cc.SpriteFrame,
|
|
8
|
+
tooltip: '悬停状态图片'
|
|
9
|
+
})
|
|
10
|
+
hoverSprite: cc.SpriteFrame = null;
|
|
11
|
+
|
|
12
|
+
@property({
|
|
13
|
+
type: cc.SpriteFrame,
|
|
14
|
+
tooltip: '普通状态图片'
|
|
15
|
+
})
|
|
16
|
+
normalSprite: cc.SpriteFrame = null;
|
|
17
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { PlatformAdapter } from "
|
|
1
|
+
import { AdSdk } from "../ad-sdk/ad-sdk";
|
|
2
|
+
import { PlatformAdapter } from "../PlatformAdapter";
|
|
3
|
+
|
|
3
4
|
|
|
4
5
|
const { ccclass, property } = cc._decorator;
|
|
5
6
|
|
|
@@ -20,17 +21,14 @@ export default class ExitWin extends cc.Component {
|
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
private onClickExit() {
|
|
23
|
-
if (
|
|
24
|
-
|
|
24
|
+
if (PlatformAdapter.isWebBridge) {
|
|
25
|
+
PlatformAdapter.webBridge.callHandler("router/navigateBack", {}, (a) => { cc.log(a); });
|
|
25
26
|
return;
|
|
26
27
|
}
|
|
28
|
+
if (AdSdk.exitGame) AdSdk.exitGame();
|
|
27
29
|
cc.game.end();
|
|
28
30
|
}
|
|
29
31
|
|
|
30
|
-
onEnable() {
|
|
31
|
-
PlatformAdapter.showWindow(this.node);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
32
|
onDisable() {
|
|
35
33
|
PlatformAdapter.hideWindow(this.node);
|
|
36
34
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
import { PlatformAdapter } from "./PlatformAdapter";
|
|
1
|
+
import { Loader } from "../Loader";
|
|
2
|
+
import { PlatformAdapter } from "../PlatformAdapter";
|
|
3
|
+
|
|
5
4
|
|
|
6
5
|
const { ccclass, property } = cc._decorator;
|
|
7
6
|
|
|
@@ -23,32 +22,19 @@ export default class HelperWin extends cc.Component {
|
|
|
23
22
|
this.spine = this.node.getChildByName("skeleton").getComponent(sp.Skeleton);
|
|
24
23
|
this.spine.skeletonData = spData;
|
|
25
24
|
this.spine.setAnimation(0, 'animation', false);
|
|
26
|
-
|
|
27
|
-
var isDown = e.action === KeyAction.Down;
|
|
28
|
-
|
|
29
|
-
if (isDown) {
|
|
30
|
-
switch (e.key) {
|
|
31
|
-
case KeyCode.Back:
|
|
32
|
-
this.node.active = false;
|
|
33
|
-
cb && cb();
|
|
34
|
-
break;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
});
|
|
25
|
+
|
|
38
26
|
this.nativeBackHandler = () => {
|
|
39
27
|
this.node.destroy();
|
|
40
28
|
cb && cb();
|
|
41
29
|
return true;
|
|
42
30
|
};
|
|
43
|
-
|
|
31
|
+
PlatformAdapter.showWindow(this.node, this.nativeBackHandler.bind(this));
|
|
44
32
|
}
|
|
45
33
|
|
|
46
34
|
onEnable() {
|
|
47
|
-
PlatformAdapter.showWindow(this.node);
|
|
48
35
|
}
|
|
49
36
|
|
|
50
37
|
onDisable() {
|
|
51
|
-
TvUi.back.remove(this.nativeBackHandler);
|
|
52
38
|
PlatformAdapter.hideWindow(this.node);
|
|
53
39
|
}
|
|
54
40
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"ver": "1.1.3",
|
|
3
|
+
"uuid": "ebf483ee-a05a-4236-a427-ec0233afbaeb",
|
|
4
|
+
"importer": "folder",
|
|
5
|
+
"isBundle": false,
|
|
6
|
+
"bundleName": "",
|
|
7
|
+
"priority": 1,
|
|
8
|
+
"compressionType": {},
|
|
9
|
+
"optimizeHotUpdate": {},
|
|
10
|
+
"inlineSpriteFrames": {},
|
|
11
|
+
"isRemoteBundle": {},
|
|
12
|
+
"subMetas": {}
|
|
13
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"ver": "1.1.3",
|
|
3
|
+
"uuid": "d7df01a4-7914-4cbd-82cb-c7b63441647b",
|
|
4
|
+
"importer": "folder",
|
|
5
|
+
"isBundle": false,
|
|
6
|
+
"bundleName": "",
|
|
7
|
+
"priority": 1,
|
|
8
|
+
"compressionType": {},
|
|
9
|
+
"optimizeHotUpdate": {},
|
|
10
|
+
"inlineSpriteFrames": {},
|
|
11
|
+
"isRemoteBundle": {},
|
|
12
|
+
"subMetas": {}
|
|
13
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"ver": "1.1.3",
|
|
3
|
+
"uuid": "645ceb69-7018-4c79-abb5-475f2521d8ad",
|
|
4
|
+
"importer": "folder",
|
|
5
|
+
"isBundle": false,
|
|
6
|
+
"bundleName": "",
|
|
7
|
+
"priority": 1,
|
|
8
|
+
"compressionType": {},
|
|
9
|
+
"optimizeHotUpdate": {},
|
|
10
|
+
"inlineSpriteFrames": {},
|
|
11
|
+
"isRemoteBundle": {},
|
|
12
|
+
"subMetas": {}
|
|
13
|
+
}
|
|
@@ -4,27 +4,9 @@ const { ccclass, property } = cc._decorator;
|
|
|
4
4
|
|
|
5
5
|
@ccclass
|
|
6
6
|
export default class FocusItem extends cc.Component {
|
|
7
|
-
@property
|
|
8
|
-
focusId: string = "";
|
|
9
|
-
|
|
10
7
|
@property
|
|
11
8
|
scopeId: string = "";
|
|
12
9
|
|
|
13
|
-
@property
|
|
14
|
-
iconKey: string = "";
|
|
15
|
-
|
|
16
|
-
@property
|
|
17
|
-
up: string = "";
|
|
18
|
-
|
|
19
|
-
@property
|
|
20
|
-
down: string = "";
|
|
21
|
-
|
|
22
|
-
@property
|
|
23
|
-
left: string = "";
|
|
24
|
-
|
|
25
|
-
@property
|
|
26
|
-
right: string = "";
|
|
27
|
-
|
|
28
10
|
@property
|
|
29
11
|
focusScale: number = 1.08;
|
|
30
12
|
|
|
@@ -54,4 +36,4 @@ export default class FocusItem extends cc.Component {
|
|
|
54
36
|
this.node.emit(cc.Node.EventType.TOUCH_END, event);
|
|
55
37
|
}
|
|
56
38
|
}
|
|
57
|
-
}
|
|
39
|
+
}
|