keytops-game-framework 1.0.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/README.md +214 -0
- package/dist/app/base/RuntimeApplicationImpl.d.ts +22 -0
- package/dist/app/base/base.d.ts +113 -0
- package/dist/app/base/event/Event.d.ts +12 -0
- package/dist/app/base/event/EventDispatcher.d.ts +66 -0
- package/dist/app/base/pool/IRecoverable.d.ts +13 -0
- package/dist/app/base/pool/Pool.d.ts +45 -0
- package/dist/app/base/utils/Handler.d.ts +69 -0
- package/dist/app/base/utils/Injector.d.ts +19 -0
- package/dist/app/base/utils/Json.d.ts +14 -0
- package/dist/app/base/utils/MathUtils.d.ts +74 -0
- package/dist/app/base/utils/NativeUtils.d.ts +4 -0
- package/dist/app/base/utils/PromiseUtils.d.ts +20 -0
- package/dist/app/base/utils/StringUtils.d.ts +66 -0
- package/dist/app/module/abTesting/ABTesting.d.ts +41 -0
- package/dist/app/module/analytics/ALiAnalyticsSender.d.ts +59 -0
- package/dist/app/module/analytics/AnalyticsAble.d.ts +191 -0
- package/dist/app/module/analytics/AnalyticsAbleConst.d.ts +20 -0
- package/dist/app/module/analytics/BaseDimension.d.ts +19 -0
- package/dist/app/module/analytics/KeytopsAnalyticsSender.d.ts +67 -0
- package/dist/app/module/analytics/ad/ADAnalyticsAble.d.ts +19 -0
- package/dist/app/module/analytics/ad/ADBehaviorReporter.d.ts +90 -0
- package/dist/app/module/analytics/ad/AdDimension.d.ts +34 -0
- package/dist/app/module/analytics/index.d.ts +65 -0
- package/dist/app/module/analytics/launch/LaunchAnalyticsAble.d.ts +11 -0
- package/dist/app/module/analytics/level/GameDimension.d.ts +39 -0
- package/dist/app/module/analytics/level/LevelAnalyticsAble.d.ts +86 -0
- package/dist/app/module/analytics/level/LevelBehaviorReporter.d.ts +29 -0
- package/dist/app/module/analytics/level/LevelStatsDimension.d.ts +70 -0
- package/dist/app/module/analytics/level/PlayerAbilityDimension.d.ts +147 -0
- package/dist/app/module/analytics/session/SessionAnalyticsAble.d.ts +9 -0
- package/dist/app/module/analytics/session/SessionDimension.d.ts +48 -0
- package/dist/app/module/analytics/social/SocialAnalyticsAble.d.ts +14 -0
- package/dist/app/module/analytics/social/SocialDimension.d.ts +14 -0
- package/dist/app/module/bidding/Bidding.d.ts +37 -0
- package/dist/app/module/business/BusinessCenter.d.ts +33 -0
- package/dist/app/module/business/IBusiness.d.ts +6 -0
- package/dist/app/module/business/RewardVideoMaskBusiness.d.ts +18 -0
- package/dist/app/module/config/ConfigHelper.d.ts +142 -0
- package/dist/app/module/ecs/Component.d.ts +125 -0
- package/dist/app/module/ecs/ECS.d.ts +162 -0
- package/dist/app/module/ecs/ECSManager.d.ts +56 -0
- package/dist/app/module/ecs/Entity.d.ts +1 -0
- package/dist/app/module/ecs/Mask.d.ts +12 -0
- package/dist/app/module/ecs/System.d.ts +54 -0
- package/dist/app/module/fsm/Fsm.d.ts +44 -0
- package/dist/app/module/fsm/FsmBase.d.ts +28 -0
- package/dist/app/module/fsm/FsmManager.d.ts +67 -0
- package/dist/app/module/fsm/IFsm.d.ts +67 -0
- package/dist/app/module/fsm/IFsmState.d.ts +38 -0
- package/dist/app/module/logger/Logger.d.ts +58 -0
- package/dist/app/module/native/INativeHelper.d.ts +6 -0
- package/dist/app/module/native/NativeHelper.d.ts +10 -0
- package/dist/app/module/net/NetInterface.d.ts +22 -0
- package/dist/app/module/net/NetManager.d.ts +24 -0
- package/dist/app/module/net/byte/ByteView.d.ts +391 -0
- package/dist/app/module/net/http/HttpNode.d.ts +104 -0
- package/dist/app/module/net/http/HttpRequest.d.ts +104 -0
- package/dist/app/module/net/server/IServer.d.ts +20 -0
- package/dist/app/module/net/server/LevelOnlineConfig.d.ts +9 -0
- package/dist/app/module/net/server/Server.d.ts +105 -0
- package/dist/app/module/net/server/SystemOnlineConfig.d.ts +34 -0
- package/dist/app/module/net/socket/BaseProtocolHelper.d.ts +31 -0
- package/dist/app/module/net/socket/Socket.d.ts +145 -0
- package/dist/app/module/net/socket/SocketNode.d.ts +63 -0
- package/dist/app/module/publisher/IADAble.d.ts +46 -0
- package/dist/app/module/publisher/IAble.d.ts +6 -0
- package/dist/app/module/publisher/IDevice.d.ts +42 -0
- package/dist/app/module/publisher/IGameUpdateAble.d.ts +21 -0
- package/dist/app/module/publisher/ILoginAble.d.ts +38 -0
- package/dist/app/module/publisher/IPayAble.d.ts +11 -0
- package/dist/app/module/publisher/IPublisher.d.ts +154 -0
- package/dist/app/module/publisher/IPublisherManager.d.ts +69 -0
- package/dist/app/module/publisher/IRecordAble.d.ts +16 -0
- package/dist/app/module/publisher/IShareAble.d.ts +39 -0
- package/dist/app/module/publisher/PublisherManager.d.ts +106 -0
- package/dist/app/module/publisher/PublisherManagerImpl.d.ts +24 -0
- package/dist/app/module/publisher/ks/KSAd.d.ts +7 -0
- package/dist/app/module/publisher/ks/KSDevice.d.ts +8 -0
- package/dist/app/module/publisher/ks/KSLogin.d.ts +7 -0
- package/dist/app/module/publisher/ks/KSPublisher.d.ts +34 -0
- package/dist/app/module/publisher/ks/KSRecorder.d.ts +13 -0
- package/dist/app/module/publisher/ks/KSShare.d.ts +32 -0
- package/dist/app/module/publisher/my/MYAd.d.ts +13 -0
- package/dist/app/module/publisher/my/MYDevice.d.ts +7 -0
- package/dist/app/module/publisher/my/MYLogin.d.ts +6 -0
- package/dist/app/module/publisher/my/MYPublisher.d.ts +6 -0
- package/dist/app/module/publisher/native/NativeAd.d.ts +22 -0
- package/dist/app/module/publisher/native/NativeAnalyticsSender.d.ts +9 -0
- package/dist/app/module/publisher/native/NativeDevice.d.ts +6 -0
- package/dist/app/module/publisher/native/NativeLogin.d.ts +27 -0
- package/dist/app/module/publisher/native/NativePay.d.ts +6 -0
- package/dist/app/module/publisher/native/NativePublisher.d.ts +21 -0
- package/dist/app/module/publisher/native/NativeRecord.d.ts +10 -0
- package/dist/app/module/publisher/native/NativeShare.d.ts +23 -0
- package/dist/app/module/publisher/tk/TKAd.d.ts +14 -0
- package/dist/app/module/publisher/tk/TKAnalyticsSender.d.ts +7 -0
- package/dist/app/module/publisher/tk/TKDevice.d.ts +9 -0
- package/dist/app/module/publisher/tk/TKLogin.d.ts +5 -0
- package/dist/app/module/publisher/tk/TKPublisher.d.ts +34 -0
- package/dist/app/module/publisher/tt/TTAd.d.ts +14 -0
- package/dist/app/module/publisher/tt/TTAnalyticsSender.d.ts +7 -0
- package/dist/app/module/publisher/tt/TTDevice.d.ts +9 -0
- package/dist/app/module/publisher/tt/TTLogin.d.ts +6 -0
- package/dist/app/module/publisher/tt/TTPay.d.ts +4 -0
- package/dist/app/module/publisher/tt/TTPublisher.d.ts +34 -0
- package/dist/app/module/publisher/tt/TTRecorder.d.ts +11 -0
- package/dist/app/module/publisher/tt/TTShare.d.ts +50 -0
- package/dist/app/module/publisher/tt/TTUpdateGameAble.d.ts +7 -0
- package/dist/app/module/publisher/wx/WXAd.d.ts +14 -0
- package/dist/app/module/publisher/wx/WXAnalyticsSender.d.ts +7 -0
- package/dist/app/module/publisher/wx/WXDevice.d.ts +8 -0
- package/dist/app/module/publisher/wx/WXLogin.d.ts +9 -0
- package/dist/app/module/publisher/wx/WXPay.d.ts +4 -0
- package/dist/app/module/publisher/wx/WXPublisher.d.ts +33 -0
- package/dist/app/module/publisher/wx/WXShare.d.ts +56 -0
- package/dist/app/module/publisher/wx/WXUpdateGameAble.d.ts +7 -0
- package/dist/app/module/storage/Storage.d.ts +123 -0
- package/dist/app/module/storage/StorageImpl.d.ts +13 -0
- package/dist/app/module/structure/Dictionary.d.ts +48 -0
- package/dist/app/module/structure/Link.d.ts +149 -0
- package/dist/app/module/structure/List.d.ts +93 -0
- package/dist/app/module/task/Task.d.ts +33 -0
- package/dist/app/module/task/TaskQueue.d.ts +17 -0
- package/dist/app/module/task/TaskSequence.d.ts +19 -0
- package/dist/app/module/timer/ITimer.d.ts +4 -0
- package/dist/app/module/timer/Timer.d.ts +133 -0
- package/dist/app/module/timer/TimerImpl.d.ts +10 -0
- package/dist/app/module/utils/md5.d.ts +3 -0
- package/dist/app/module/view/IView.d.ts +94 -0
- package/dist/app/module/view/IViewLoader.d.ts +48 -0
- package/dist/app/module/view/ViewManager.d.ts +242 -0
- package/dist/audio/AudioManager.d.ts +146 -0
- package/dist/business/AudioBusiness.d.ts +11 -0
- package/dist/cocos.d.ts +1 -0
- package/dist/index.d.ts +146 -0
- package/dist/index.js +14981 -0
- package/dist/native/CocosNativeHelper.d.ts +12 -0
- package/dist/resource/ResourceManager.d.ts +187 -0
- package/dist/utils/Async.d.ts +28 -0
- package/dist/utils/CocosStorageUtils.d.ts +10 -0
- package/dist/utils/GeometryUtils.d.ts +31 -0
- package/dist/view/CCPViewLoader.d.ts +95 -0
- package/dist/view/CCSceneLoader.d.ts +25 -0
- package/dist/view/CocosViewManager.d.ts +12 -0
- package/dist/view/Scene.d.ts +35 -0
- package/dist/view/View.d.ts +151 -0
- package/dist/view/ViewControl.d.ts +106 -0
- package/dist/view/tips/TipsView.d.ts +12 -0
- package/dist/vitest.config.d.ts +2 -0
- package/package.json +33 -0
package/README.md
ADDED
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
# keytops-game-framework
|
|
2
|
+
|
|
3
|
+
`keytops-game-framework` 是面向 Cocos Creator 项目的游戏开发框架,提供应用生命周期、网络通信、平台能力、存储、计时器、ECS、FSM、任务、埋点、视图、资源和音频等基础设施。这个包定位于框架层,适合需要直接使用底层模块和引擎适配能力的项目,不是精简 facade SDK。
|
|
4
|
+
|
|
5
|
+
## 适用场景
|
|
6
|
+
|
|
7
|
+
- 使用 Cocos Creator 构建完整游戏项目
|
|
8
|
+
- 需要统一的应用启动、平台接入和模块化基础设施
|
|
9
|
+
- 需要网络、ECS、FSM、埋点、视图和资源管理能力
|
|
10
|
+
- 需要在框架层扩展自定义注入或平台能力
|
|
11
|
+
|
|
12
|
+
## 安装
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npm install keytops-game-framework
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## 快速开始
|
|
19
|
+
|
|
20
|
+
```ts
|
|
21
|
+
import { App } from 'keytops-game-framework';
|
|
22
|
+
|
|
23
|
+
await App.launch({
|
|
24
|
+
injects: [],
|
|
25
|
+
});
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
`App.launch()` 会走框架入口,并通过 `cocos.ts` 自动完成 Cocos Creator 相关注入。
|
|
29
|
+
|
|
30
|
+
## Cocos 注入说明
|
|
31
|
+
|
|
32
|
+
包根入口会执行 `cocos.ts`,默认注入以下实现:
|
|
33
|
+
|
|
34
|
+
- `Storage.KEY -> CocosStorageUtils`
|
|
35
|
+
- `Timer.KEY -> TimerImpl`
|
|
36
|
+
- `NativeHelper.KEY -> CocosNativeHelper`
|
|
37
|
+
- `ViewManager.KEY -> CocosViewManager`
|
|
38
|
+
|
|
39
|
+
这意味着在 Cocos Creator 环境中直接从包根导入并调用 `App.launch()`,即可使用默认的存储、计时器、原生桥接和视图管理实现。
|
|
40
|
+
|
|
41
|
+
## 主要导出能力
|
|
42
|
+
|
|
43
|
+
### 应用生命周期与基础设施
|
|
44
|
+
|
|
45
|
+
- `App`
|
|
46
|
+
- `Application`
|
|
47
|
+
- `Injector`
|
|
48
|
+
- `Event`
|
|
49
|
+
- `EventDispatcher`
|
|
50
|
+
- `Pool`
|
|
51
|
+
|
|
52
|
+
```ts
|
|
53
|
+
import { App, Injector } from 'keytops-game-framework';
|
|
54
|
+
|
|
55
|
+
await App.launch({
|
|
56
|
+
injects: [],
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
const launchTimes = App.launchTimes;
|
|
60
|
+
const sessionId = App.sessionId;
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### 网络与配置
|
|
64
|
+
|
|
65
|
+
- `net`
|
|
66
|
+
- `NetManager`
|
|
67
|
+
- `Server`
|
|
68
|
+
- `SystemOnlineConfig`
|
|
69
|
+
- `LevelOnlineConfig`
|
|
70
|
+
- `HttpRequest`
|
|
71
|
+
- `Socket`
|
|
72
|
+
|
|
73
|
+
```ts
|
|
74
|
+
import { net } from 'keytops-game-framework';
|
|
75
|
+
|
|
76
|
+
net.logable = true;
|
|
77
|
+
await net.http.sendsync('/health', {
|
|
78
|
+
method: 'get',
|
|
79
|
+
responseType: 'json',
|
|
80
|
+
});
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Publisher 平台能力
|
|
84
|
+
|
|
85
|
+
- `publisher`
|
|
86
|
+
- `PublisherManager`
|
|
87
|
+
- `PublisherManagerImpl`
|
|
88
|
+
- `IPublisher`
|
|
89
|
+
- `ILoginAble`
|
|
90
|
+
- `IADAble`
|
|
91
|
+
- `IShareAble`
|
|
92
|
+
- `IPayAble`
|
|
93
|
+
- `IDevice`
|
|
94
|
+
- 平台实现:`WX*`、`TT*`、`KS*`、`MY*`、`Native*`、`TK*`
|
|
95
|
+
|
|
96
|
+
```ts
|
|
97
|
+
import { publisher } from 'keytops-game-framework';
|
|
98
|
+
|
|
99
|
+
publisher.enable();
|
|
100
|
+
|
|
101
|
+
const appId = publisher.appId;
|
|
102
|
+
const deviceInfo = publisher.device.deviceInfo;
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### 存储与计时器
|
|
106
|
+
|
|
107
|
+
- `storage`
|
|
108
|
+
- `Storage`
|
|
109
|
+
- `StorageImpl`
|
|
110
|
+
- `timer`
|
|
111
|
+
- `Timer`
|
|
112
|
+
- `TimerImpl`
|
|
113
|
+
|
|
114
|
+
```ts
|
|
115
|
+
import { storage, timer } from 'keytops-game-framework';
|
|
116
|
+
|
|
117
|
+
storage.setGValue('music', true);
|
|
118
|
+
timer.loop(1000, null, () => {
|
|
119
|
+
console.log('tick');
|
|
120
|
+
});
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### ECS / FSM / Task
|
|
124
|
+
|
|
125
|
+
- `ECS`
|
|
126
|
+
- `ECSManager`
|
|
127
|
+
- `Component`
|
|
128
|
+
- `Entity`
|
|
129
|
+
- `System`
|
|
130
|
+
- `Fsm`
|
|
131
|
+
- `FsmBase`
|
|
132
|
+
- `FsmManager`
|
|
133
|
+
- `Task`
|
|
134
|
+
- `TaskQueue`
|
|
135
|
+
- `TaskSequence`
|
|
136
|
+
|
|
137
|
+
这些模块适合搭建带状态管理和任务编排的业务逻辑层。
|
|
138
|
+
|
|
139
|
+
### Analytics
|
|
140
|
+
|
|
141
|
+
- `analytics`
|
|
142
|
+
- `AnalyticsAble`
|
|
143
|
+
- `KeytopsAnalyticsSender`
|
|
144
|
+
- `ALiAnalyticsSender`
|
|
145
|
+
- `LaunchAnalyticsAble`
|
|
146
|
+
- 关卡、广告、社交、会话等统计能力
|
|
147
|
+
|
|
148
|
+
```ts
|
|
149
|
+
import { analytics } from 'keytops-game-framework';
|
|
150
|
+
|
|
151
|
+
analytics.enable(true);
|
|
152
|
+
analytics.base.report('framework_ready', {
|
|
153
|
+
name: 'boot',
|
|
154
|
+
});
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### View / Resource / Audio
|
|
158
|
+
|
|
159
|
+
- `View`
|
|
160
|
+
- `Scene`
|
|
161
|
+
- `CocosViewManager`
|
|
162
|
+
- `CCSceneLoader`
|
|
163
|
+
- `CCPViewLoader`
|
|
164
|
+
- `ViewControl`
|
|
165
|
+
- `TipsView`
|
|
166
|
+
- `ResourceManager`
|
|
167
|
+
- `AudioManager`
|
|
168
|
+
- `AudioBusiness`
|
|
169
|
+
|
|
170
|
+
这些模块提供 Cocos Creator 方向的界面、资源和音频能力。
|
|
171
|
+
|
|
172
|
+
## 扩展方式
|
|
173
|
+
|
|
174
|
+
### 追加自定义注入
|
|
175
|
+
|
|
176
|
+
```ts
|
|
177
|
+
import { App } from 'keytops-game-framework';
|
|
178
|
+
|
|
179
|
+
class CustomService {
|
|
180
|
+
static KEY = 'CustomService';
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
await App.launch({
|
|
184
|
+
injects: [CustomService],
|
|
185
|
+
});
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### 扩展新的引擎适配层
|
|
189
|
+
|
|
190
|
+
如果后续要把同一套框架迁移到其他引擎,推荐参考 `cocos.ts` 的做法:
|
|
191
|
+
|
|
192
|
+
1. 实现新的 `IApplication`
|
|
193
|
+
2. 为存储、计时器、原生桥接、视图管理等注入对应实现
|
|
194
|
+
3. 通过 `Injector.inject(Application.KEY, NewEngineApplication)` 注册入口
|
|
195
|
+
|
|
196
|
+
当前这个发布包仍然是以 Cocos Creator 为中心的游戏框架,不建议在 README 中把它表述为“现成支持多引擎发布”的通用产品。
|
|
197
|
+
|
|
198
|
+
## 构建
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
npm run build
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
构建产物:
|
|
205
|
+
|
|
206
|
+
- `dist/index.js`
|
|
207
|
+
- `dist/index.d.ts`
|
|
208
|
+
|
|
209
|
+
## 注意事项
|
|
210
|
+
|
|
211
|
+
- 推荐直接从包根导入当前已经公开导出的符号,不要依赖未声明的内部路径
|
|
212
|
+
- `App.launch()` 只接受 `injects`,README 示例不再使用不存在的 `remoteConfig` 或 `enableBidding` 参数
|
|
213
|
+
- 这是游戏框架层,不是 facade SDK;如果只需要 `keytops.init()`、`user`、`config`、`analytics`、`ad`、`level`,请使用 `keytops-game-sdk`
|
|
214
|
+
- 引擎特定实现应依赖框架接口,不应反向耦合业务层
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { IApplication } from "./base";
|
|
2
|
+
/**
|
|
3
|
+
* 通用运行时 Application 实现,不依赖特定引擎。
|
|
4
|
+
*/
|
|
5
|
+
export declare class RuntimeApplicationImpl implements IApplication {
|
|
6
|
+
private _launched;
|
|
7
|
+
private _showListeners;
|
|
8
|
+
private _hideListeners;
|
|
9
|
+
launch(): void;
|
|
10
|
+
onShow(call: () => void, caller?: any): void;
|
|
11
|
+
offShow(call: () => void, caller?: any): void;
|
|
12
|
+
onHide(call: () => void, caller?: any): void;
|
|
13
|
+
offHide(call: () => void, caller?: any): void;
|
|
14
|
+
private _getPublisher;
|
|
15
|
+
private _onVisibilityChange;
|
|
16
|
+
private _onFocus;
|
|
17
|
+
private _onBlur;
|
|
18
|
+
private _onPageShow;
|
|
19
|
+
private _onPageHide;
|
|
20
|
+
private _emitShow;
|
|
21
|
+
private _emitHide;
|
|
22
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 版本号
|
|
3
|
+
*/
|
|
4
|
+
export declare const version: string;
|
|
5
|
+
export interface IApplication {
|
|
6
|
+
launch(): void;
|
|
7
|
+
onShow(call: () => void, caller?: any): void;
|
|
8
|
+
offShow(call: () => void, caller?: any): void;
|
|
9
|
+
onHide(call: () => void, caller?: any): void;
|
|
10
|
+
offHide(call: () => void, caller?: any): void;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* 框架接口,由各个引擎实现,处理框架启动等逻辑
|
|
14
|
+
*/
|
|
15
|
+
export declare class Application {
|
|
16
|
+
static KEY: string;
|
|
17
|
+
private _installTime;
|
|
18
|
+
private _lastLaunchTime;
|
|
19
|
+
private _launchTime;
|
|
20
|
+
private _launchTimes;
|
|
21
|
+
private _sessionId;
|
|
22
|
+
/**
|
|
23
|
+
* 启动框架
|
|
24
|
+
* @injects?:any[] 注册类
|
|
25
|
+
* @enableBidding?:boolean 是否启用直投,默认为false
|
|
26
|
+
* @returns
|
|
27
|
+
*/
|
|
28
|
+
launch(data?: {
|
|
29
|
+
injects?: any[];
|
|
30
|
+
}): Promise<void>;
|
|
31
|
+
reset(): void;
|
|
32
|
+
private _resetLaunchTimes;
|
|
33
|
+
/**
|
|
34
|
+
* 注入组件
|
|
35
|
+
* @param injects
|
|
36
|
+
*/
|
|
37
|
+
protected _injects(injects: any[]): void;
|
|
38
|
+
/**
|
|
39
|
+
* 当前用户是否是登录后第一次启动
|
|
40
|
+
*/
|
|
41
|
+
get isFirstLaunchOfThisUser(): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* 是否是首日
|
|
44
|
+
*/
|
|
45
|
+
get isFirstDay(): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* 是否是第一次启动
|
|
48
|
+
*/
|
|
49
|
+
get isFirstLaunch(): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* 当前的启动时间戳(毫秒)
|
|
52
|
+
*/
|
|
53
|
+
get launchTime(): number;
|
|
54
|
+
/**
|
|
55
|
+
* 上次启动时间戳(毫秒)
|
|
56
|
+
*/
|
|
57
|
+
get lastLaunchTime(): number;
|
|
58
|
+
/**
|
|
59
|
+
* 当前的启动次数,从1开始。
|
|
60
|
+
*/
|
|
61
|
+
get launchTimes(): number;
|
|
62
|
+
/**
|
|
63
|
+
* 当前启动时长(毫秒)
|
|
64
|
+
*/
|
|
65
|
+
get durationOfLaunch(): number;
|
|
66
|
+
/**
|
|
67
|
+
* 安装后的时长(毫秒)
|
|
68
|
+
*/
|
|
69
|
+
get durationOfInstall(): number;
|
|
70
|
+
/**
|
|
71
|
+
* 安装时间(第一次启动时间戳)(毫秒)
|
|
72
|
+
*/
|
|
73
|
+
get installTime(): number;
|
|
74
|
+
/**
|
|
75
|
+
* 安装后的天数(基于24小时周期)
|
|
76
|
+
*/
|
|
77
|
+
get daysInstall(): number;
|
|
78
|
+
/**
|
|
79
|
+
* 安装后经过的日历天数(基于0点,真正的"今天"概念)
|
|
80
|
+
* 例如:2月1日15:00安装,2月2日14:00时返回1(跨越了1个0点)
|
|
81
|
+
*/
|
|
82
|
+
get calendarDaysSinceInstall(): number;
|
|
83
|
+
/**
|
|
84
|
+
* 安装后的小时数
|
|
85
|
+
*/
|
|
86
|
+
get hoursInstall(): number;
|
|
87
|
+
/**
|
|
88
|
+
* 安装后的分钟数
|
|
89
|
+
*/
|
|
90
|
+
get minutesInstall(): number;
|
|
91
|
+
/**
|
|
92
|
+
* 当前安装的匿名设备ID
|
|
93
|
+
*/
|
|
94
|
+
get deviceId(): string;
|
|
95
|
+
/**
|
|
96
|
+
* 当前会话ID
|
|
97
|
+
*/
|
|
98
|
+
get sessionId(): string;
|
|
99
|
+
onShow(call: (...args: any[]) => void, caller?: any): void;
|
|
100
|
+
offShow(call: (...args: any[]) => void, caller?: any): void;
|
|
101
|
+
onHide(call: (...args: any[]) => void, caller?: any): void;
|
|
102
|
+
offHide(call: (...args: any[]) => void, caller?: any): void;
|
|
103
|
+
/**
|
|
104
|
+
* 重启
|
|
105
|
+
*/
|
|
106
|
+
restart(): void;
|
|
107
|
+
private _impl;
|
|
108
|
+
private get impl();
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* 框架接口
|
|
112
|
+
*/
|
|
113
|
+
export declare const App: Application;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare enum Event {
|
|
2
|
+
START = "LURE.EVENT.START",
|
|
3
|
+
PROGRESS = "LURE.EVENT.PROGRESS",
|
|
4
|
+
COMPLETE = "LURE.EVENT.COMPLETE",
|
|
5
|
+
ERROR = "LURE.EVENT.ERROR",
|
|
6
|
+
ADD = "LURE.EVENT.ADD",
|
|
7
|
+
REMOVE = "LURE.EVENT.REMOVE",
|
|
8
|
+
CLEAR = "LURE.EVENT.CLEAR",
|
|
9
|
+
OPEN = "LURE.EVENT.OPEN",
|
|
10
|
+
MESSAGE = "LURE.EVENT.MESSAGE",
|
|
11
|
+
CLOSE = "LURE.EVENT.CLOSE"
|
|
12
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* <code>EventDispatcher</code> 类是可调度事件的所有类的基类。
|
|
3
|
+
*/
|
|
4
|
+
export declare class EventDispatcher {
|
|
5
|
+
/**@private */
|
|
6
|
+
private _events;
|
|
7
|
+
/**
|
|
8
|
+
* 检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。
|
|
9
|
+
* @param type 事件的类型。
|
|
10
|
+
* @return 如果指定类型的侦听器已注册,则值为 true;否则,值为 false。
|
|
11
|
+
*/
|
|
12
|
+
hasListener(type: string): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* 派发事件。
|
|
15
|
+
* @param type 事件类型。
|
|
16
|
+
* @param data (可选)回调数据。<b>注意:</b>如果是需要传递多个参数 p1,p2,p3,...可以使用数组结构如:[p1,p2,p3,...] ;如果需要回调单个参数 p ,且 p 是一个数组,则需要使用结构如:[p],其他的单个参数 p ,可以直接传入参数 p。
|
|
17
|
+
* @return 此事件类型是否有侦听者,如果有侦听者则值为 true,否则值为 false。
|
|
18
|
+
*/
|
|
19
|
+
event(type: string, data?: any): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* 使用 EventDispatcher 对象注册指定类型的事件侦听器对象,以使侦听器能够接收事件通知。
|
|
22
|
+
* @param type 事件的类型。
|
|
23
|
+
* @param caller 事件侦听函数的执行域。
|
|
24
|
+
* @param listener 事件侦听函数。
|
|
25
|
+
* @param args (可选)事件侦听函数的回调参数。
|
|
26
|
+
* @return 此 EventDispatcher 对象。
|
|
27
|
+
*/
|
|
28
|
+
on(type: string, caller: any, listener: Function, args?: any[]): EventDispatcher;
|
|
29
|
+
/**
|
|
30
|
+
* 使用 EventDispatcher 对象注册指定类型的事件侦听器对象,以使侦听器能够接收事件通知,此侦听事件响应一次后自动移除。
|
|
31
|
+
* @param type 事件的类型。
|
|
32
|
+
* @param caller 事件侦听函数的执行域。
|
|
33
|
+
* @param listener 事件侦听函数。
|
|
34
|
+
* @param args (可选)事件侦听函数的回调参数。
|
|
35
|
+
* @return 此 EventDispatcher 对象。
|
|
36
|
+
*/
|
|
37
|
+
once(type: string, caller: any, listener: Function, args?: any[]): EventDispatcher;
|
|
38
|
+
/**@internal */
|
|
39
|
+
private _createListener;
|
|
40
|
+
/**
|
|
41
|
+
* 从 EventDispatcher 对象中删除侦听器。
|
|
42
|
+
* @param type 事件的类型。
|
|
43
|
+
* @param caller 事件侦听函数的执行域。
|
|
44
|
+
* @param listener 事件侦听函数。
|
|
45
|
+
* @param onceOnly (可选)如果值为 true ,则只移除通过 once 方法添加的侦听器。
|
|
46
|
+
* @return 此 EventDispatcher 对象。
|
|
47
|
+
*/
|
|
48
|
+
off(type: string, caller: any, listener: Function, onceOnly?: boolean): EventDispatcher;
|
|
49
|
+
/**
|
|
50
|
+
* 从 EventDispatcher 对象中删除指定事件类型的所有侦听器。
|
|
51
|
+
* @param type (可选)事件类型,如果值为 null,则移除本对象所有类型的侦听器。
|
|
52
|
+
* @return 此 EventDispatcher 对象。
|
|
53
|
+
*/
|
|
54
|
+
offAll(type?: string): EventDispatcher;
|
|
55
|
+
/**
|
|
56
|
+
* 移除caller为target的所有事件监听
|
|
57
|
+
* @param caller caller对象
|
|
58
|
+
*/
|
|
59
|
+
offByCaller(caller: any): void;
|
|
60
|
+
offAllEvent(): void;
|
|
61
|
+
private _recoverHandlers;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* 全局事件中心
|
|
65
|
+
*/
|
|
66
|
+
export declare const eventCenter: EventDispatcher;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { IRecoverable } from "./IRecoverable";
|
|
2
|
+
/**
|
|
3
|
+
* 对象池
|
|
4
|
+
*/
|
|
5
|
+
export declare class Pool<T extends IRecoverable> {
|
|
6
|
+
/**池中闲置对象 */
|
|
7
|
+
private _cacheStack;
|
|
8
|
+
/**正在使用的对象 */
|
|
9
|
+
private _usingArray;
|
|
10
|
+
/**池中对象最大数 */
|
|
11
|
+
private _maxCount;
|
|
12
|
+
private _class;
|
|
13
|
+
constructor(clazz: {
|
|
14
|
+
new (...arg: any[]): T;
|
|
15
|
+
}, maxCount?: number);
|
|
16
|
+
/**
|
|
17
|
+
* 在池中的对象
|
|
18
|
+
*/
|
|
19
|
+
get count(): number;
|
|
20
|
+
/**
|
|
21
|
+
* 使用中的数量
|
|
22
|
+
*/
|
|
23
|
+
get usingCount(): number;
|
|
24
|
+
/**
|
|
25
|
+
* 分配
|
|
26
|
+
* @returns
|
|
27
|
+
*/
|
|
28
|
+
allocate(createData?: any): T;
|
|
29
|
+
/**
|
|
30
|
+
* 回收到池中
|
|
31
|
+
* @param value
|
|
32
|
+
* @returns
|
|
33
|
+
*/
|
|
34
|
+
recover(value: T): void;
|
|
35
|
+
/**
|
|
36
|
+
* 批量回收
|
|
37
|
+
* @param list
|
|
38
|
+
*/
|
|
39
|
+
recoverList(list: Array<T>): void;
|
|
40
|
+
/**
|
|
41
|
+
* 将所有使用中的对象都回收到池中
|
|
42
|
+
*/
|
|
43
|
+
recoverAll(): void;
|
|
44
|
+
destroy(): void;
|
|
45
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { IRecoverable } from "../pool/IRecoverable";
|
|
2
|
+
import { Pool } from "../pool/Pool";
|
|
3
|
+
/**
|
|
4
|
+
* <p><code>Handler</code> 是事件处理器类。</p>
|
|
5
|
+
* <p>推荐使用 Handler.create() 方法从对象池创建,减少对象创建消耗。创建的 Handler 对象不再使用后,可以使用 Handler.recover() 将其回收到对象池,回收后不要再使用此对象,否则会导致不可预料的错误。</p>
|
|
6
|
+
* <p><b>注意:</b>由于鼠标事件也用本对象池,不正确的回收及调用,可能会影响鼠标事件的执行。</p>
|
|
7
|
+
*/
|
|
8
|
+
export declare class Handler implements IRecoverable {
|
|
9
|
+
/**@private handler对象池*/
|
|
10
|
+
protected static _pool: Pool<Handler>;
|
|
11
|
+
/**@private */
|
|
12
|
+
private static _gid;
|
|
13
|
+
/** 执行域(this)。*/
|
|
14
|
+
caller: Object | null;
|
|
15
|
+
/** 处理方法。*/
|
|
16
|
+
method: Function | null;
|
|
17
|
+
/** 参数。*/
|
|
18
|
+
args: any[] | null;
|
|
19
|
+
/** 表示是否只执行一次。如果为true,回调后执行recover()进行回收,回收后会被再利用,默认为false 。*/
|
|
20
|
+
once: boolean;
|
|
21
|
+
/**@private */
|
|
22
|
+
protected _id: number;
|
|
23
|
+
/**
|
|
24
|
+
* 根据指定的属性值,创建一个 <code>Handler</code> 类的实例。
|
|
25
|
+
* @param caller 执行域。
|
|
26
|
+
* @param method 处理函数。
|
|
27
|
+
* @param args 函数参数。
|
|
28
|
+
* @param once 是否只执行一次。
|
|
29
|
+
*/
|
|
30
|
+
constructor(caller?: Object | null, method?: Function | null, args?: any[] | null, once?: boolean);
|
|
31
|
+
/**
|
|
32
|
+
* 设置此对象的指定属性值。
|
|
33
|
+
* @param caller 执行域(this)。
|
|
34
|
+
* @param method 回调方法。
|
|
35
|
+
* @param args 携带的参数。
|
|
36
|
+
* @param once 是否只执行一次,如果为true,执行后执行recover()进行回收。
|
|
37
|
+
* @return 返回 handler 本身。
|
|
38
|
+
*/
|
|
39
|
+
setTo(caller: any, method: Function | null, args: any[] | null, once?: boolean): Handler;
|
|
40
|
+
/**
|
|
41
|
+
* 执行处理器。
|
|
42
|
+
*/
|
|
43
|
+
run(): any;
|
|
44
|
+
/**
|
|
45
|
+
* 执行处理器,并携带额外数据。
|
|
46
|
+
* @param data 附加的回调数据,可以是单数据或者Array(作为多参)。
|
|
47
|
+
*/
|
|
48
|
+
runWith(data: any): any;
|
|
49
|
+
/**
|
|
50
|
+
* 清理对象引用。
|
|
51
|
+
*/
|
|
52
|
+
clear(): Handler;
|
|
53
|
+
reset(): void;
|
|
54
|
+
destroy(): void;
|
|
55
|
+
/**
|
|
56
|
+
* 清理并回收到 Handler 对象池内。
|
|
57
|
+
*/
|
|
58
|
+
recover(): void;
|
|
59
|
+
equal(value: Handler): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* 从对象池内创建一个Handler,默认会执行一次并立即回收,如果不需要自动回收,设置once参数为false。
|
|
62
|
+
* @param caller 执行域(this)。
|
|
63
|
+
* @param method 回调方法。
|
|
64
|
+
* @param args 携带的参数。
|
|
65
|
+
* @param once 是否只执行一次,如果为true,回调后执行recover()进行回收,默认为true。
|
|
66
|
+
* @return 返回创建的handler实例。
|
|
67
|
+
*/
|
|
68
|
+
static create(caller: any, method: Function | null, args?: any[] | null, once?: boolean): Handler;
|
|
69
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 简单的注入器
|
|
3
|
+
*/
|
|
4
|
+
export declare class Injector {
|
|
5
|
+
/**类型字典*/
|
|
6
|
+
private static _injectedMap;
|
|
7
|
+
/**实例字典*/
|
|
8
|
+
private static _instanceMap;
|
|
9
|
+
/**
|
|
10
|
+
* 注入
|
|
11
|
+
* @param key
|
|
12
|
+
* @param clazz 类型或实例
|
|
13
|
+
*/
|
|
14
|
+
static inject(customKey: string, clazz: any): void;
|
|
15
|
+
/**
|
|
16
|
+
* 获取已注入的类型实例
|
|
17
|
+
*/
|
|
18
|
+
static getInject<T>(customKey: string): T;
|
|
19
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare class Json {
|
|
2
|
+
/**
|
|
3
|
+
* 默认的json 转化函数,即不做任何操作
|
|
4
|
+
* @param key
|
|
5
|
+
* @param value
|
|
6
|
+
*/
|
|
7
|
+
static NoneReviver(key: string, value: any): any;
|
|
8
|
+
/**
|
|
9
|
+
* json 转化函数,将字符串形式的毫秒时间戳(13字符长度)转换为纯数字。
|
|
10
|
+
* @param key
|
|
11
|
+
* @param value
|
|
12
|
+
*/
|
|
13
|
+
static TimestampReviver(key: string, value: any): any;
|
|
14
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
export declare class MathUtils {
|
|
2
|
+
/**
|
|
3
|
+
* 随机种子
|
|
4
|
+
*/
|
|
5
|
+
static seed: number;
|
|
6
|
+
/**
|
|
7
|
+
* 唯一记录
|
|
8
|
+
*/
|
|
9
|
+
private static onlyMap;
|
|
10
|
+
/**
|
|
11
|
+
* 随机
|
|
12
|
+
* @param min
|
|
13
|
+
* @param max
|
|
14
|
+
*/
|
|
15
|
+
static random(min: number, max: number): number;
|
|
16
|
+
/**
|
|
17
|
+
* 随机整数值
|
|
18
|
+
* @param min
|
|
19
|
+
* @param max
|
|
20
|
+
*/
|
|
21
|
+
static randomInt(min: number, max: number): number;
|
|
22
|
+
/**
|
|
23
|
+
* 随机唯一稳定值
|
|
24
|
+
* @param min
|
|
25
|
+
* @param max
|
|
26
|
+
* @param clear 是否清除唯一记录
|
|
27
|
+
*/
|
|
28
|
+
static randomOnlyInt(min: number, max: number, clear?: boolean): number;
|
|
29
|
+
/**
|
|
30
|
+
* 获取两点间的角度
|
|
31
|
+
* @param p1 点1
|
|
32
|
+
* @param p2 点2
|
|
33
|
+
*/
|
|
34
|
+
static getAngle(p1: {
|
|
35
|
+
x: number;
|
|
36
|
+
y: number;
|
|
37
|
+
}, p2: {
|
|
38
|
+
x: number;
|
|
39
|
+
y: number;
|
|
40
|
+
}): number;
|
|
41
|
+
/**
|
|
42
|
+
* 获取两点间的距离
|
|
43
|
+
* @param p1 点1
|
|
44
|
+
* @param p2 点2
|
|
45
|
+
*/
|
|
46
|
+
static getDistance(p1: {
|
|
47
|
+
x: number;
|
|
48
|
+
y: number;
|
|
49
|
+
}, p2: {
|
|
50
|
+
x: number;
|
|
51
|
+
y: number;
|
|
52
|
+
}): number;
|
|
53
|
+
/**
|
|
54
|
+
* 将角度转为弧度
|
|
55
|
+
* @param angle 角度
|
|
56
|
+
*/
|
|
57
|
+
static angleToRadian(angle: number): number;
|
|
58
|
+
/**
|
|
59
|
+
* 求旋转后的点坐标
|
|
60
|
+
* @param angle 角度
|
|
61
|
+
* @param point 旋转前的坐标点
|
|
62
|
+
* @param result
|
|
63
|
+
*/
|
|
64
|
+
static getRotationPoint(angle: number, pointOrDir: {
|
|
65
|
+
x: number;
|
|
66
|
+
y: number;
|
|
67
|
+
}, result?: {
|
|
68
|
+
x: number;
|
|
69
|
+
y: number;
|
|
70
|
+
}): {
|
|
71
|
+
x: number;
|
|
72
|
+
y: number;
|
|
73
|
+
};
|
|
74
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare class PromiseUtils {
|
|
2
|
+
/**
|
|
3
|
+
* 延迟
|
|
4
|
+
* @param time 延迟时间,单位毫秒
|
|
5
|
+
*/
|
|
6
|
+
static delay(time: number): Promise<void>;
|
|
7
|
+
/**
|
|
8
|
+
* 并发多个Promise,和Promise.all相同,只是实现了其中progress。完成后返回结果列表。
|
|
9
|
+
* @param promises
|
|
10
|
+
* @param progress
|
|
11
|
+
* @returns
|
|
12
|
+
*/
|
|
13
|
+
static each(promises: Promise<any>[], progress: (step: number, total: number) => void): Promise<any[]>;
|
|
14
|
+
/**
|
|
15
|
+
* 队列逐个执行多个Promise。完成后返回结果列表。
|
|
16
|
+
* @param promises
|
|
17
|
+
* @returns
|
|
18
|
+
*/
|
|
19
|
+
static sequence(promises: Promise<any>[], progress: (step: number, total: number) => void): Promise<any[]>;
|
|
20
|
+
}
|