Commit e6f13bf69475fd4854ad5072112cf681e998bfe4
1 parent
598d14fd
Exists in
master
1
Showing
6 changed files
with
299 additions
and
31 deletions
Show diff stats
data.md
... | ... | @@ -5,7 +5,7 @@ |
5 | 5 | |
6 | 6 | #### **简介** |
7 | 7 | |
8 | -此模块为开发者提供游戏用到的一些数据信息,例如:config.js配置的GameId,ChannelId、从分享链接进入query携带的参数(share_id/share_key/invite_user_uid/channel_id)、setLogind设置的用户ID(userId)和用户注册时间(regTime)等等,详细请阅读下面的api。 | |
8 | +此模块为开发者提供游戏用到的一些数据信息,例如:config.js配置的GameId,ChannelId、从分享链接进入query携带的参数(share_id/share_key/user_invite_uid/channel_id)、setLogind设置的用户ID(userId)和用户注册时间(regTime)等等,详细请阅读下面的api。 | |
9 | 9 | |
10 | 10 | |
11 | 11 | ... | ... |
download.md
... | ... | @@ -8,8 +8,9 @@ |
8 | 8 | |
9 | 9 | **新增:** |
10 | 10 | |
11 | -1. 移除掉stat模块的onlineTimeLen和logout api | |
12 | -2. 微信小游戏引入GameIcon、GameBanner、GamePortal组件 | |
11 | +1. 移除掉stat模块的onlineTimeLen和logout api。 | |
12 | +2. 微信小游戏引入GameIcon、GameBanner、GamePortal组件。 | |
13 | +3. config.js添加积分投放IntegralChannelId参数,用于积分投放渠道统计。 | |
13 | 14 | |
14 | 15 | ## [v1.0.0.2 下载](https://dep.miso-lab.com/sdkword/versions/sdk-out-v1.0.0.2.zip) |
15 | 16 | |
... | ... | @@ -21,7 +22,7 @@ |
21 | 22 | |
22 | 23 | **新增:** |
23 | 24 | |
24 | -1. 外部游戏修改setLogind接口为setLoginInfo( { openId: strinng , retTime: number } ); | |
25 | +1. 外部游戏修改setLogind接口为setLoginInfo( { openId: strinng , retTime: number } )。 | |
25 | 26 | 2. loadingFinish传递isActive参数,isActive为true SDK在loadingFinish结束后自动调用active。 |
26 | 27 | |
27 | 28 | ## [v1.0.0.1 下载](https://dep.miso-lab.com/sdkword/versions/sdk-out-v1.0.0.1.zip) |
... | ... | @@ -46,15 +47,15 @@ |
46 | 47 | |
47 | 48 | **修复:** |
48 | 49 | |
49 | -1. SDK外部版本不需要接入方调用stat 模块launch接口,SDK启动时候自动调用 | |
50 | -2. QQ轻游戏分享不成功回调的问题 | |
51 | -3. QQ轻游戏banner广告不贴底部的问题 | |
50 | +1. SDK外部版本不需要接入方调用stat 模块launch接口,SDK启动时候自动调用。 | |
51 | +2. QQ轻游戏分享不成功回调的问题。 | |
52 | +3. QQ轻游戏banner广告不贴底部的问题。 | |
52 | 53 | |
53 | 54 | **新增:** |
54 | 55 | |
55 | -1. config.js配置新增IsOnlineAutoUse、IsOnlineDebug、ShareRightKey配置参数 | |
56 | +1. config.js配置新增IsOnlineAutoUse、IsOnlineDebug、ShareRightKey配置参数。 | |
56 | 57 | |
57 | - 在线参数获取通过配置决定是否启动拉取,右上角分享配置进行读取shareKey | |
58 | + 在线参数获取通过配置决定是否启动拉取,右上角分享配置进行读取shareKey。 | |
58 | 59 | |
59 | -2. SDK分享模块不区分内部还是外部游戏,都引入分享/视频模块功能 | |
60 | +2. SDK分享模块不区分内部还是外部游戏,都引入分享/视频模块功能。 | |
60 | 61 | ... | ... |
event.md
... | ... | @@ -3,8 +3,273 @@ |
3 | 3 | |
4 | 4 | 事件本质是一种通信方式,是一种消息,只有存在多个对象,多个模块的情况下,才有可能需要用到事件进行通信。 |
5 | 5 | |
6 | -有时我们还需要自定义事件以满足特定的需求,比如小模块之间的通信,传递信息等。开发者游戏项目和PCSDK属于两个不同的模块,PCSDK会在SDK内部处理一些业务,想要把这些处理结果告知开发者,那么自定义事件就派上用场了。 | |
6 | +开发者游戏项目和PCSDK属于两个不同的模块,PCSDK会在SDK内部处理一些业务,想要把这些处理结果告知开发者,那么自定义事件就派上用场了,SDK封装了一个event模块:PCSDK.event,开发者可使用这个模块接收SDK内部派发的消息,也可以应用在游戏中不同模块中通信的情况。 | |
7 | 7 | |
8 | -例如: | |
8 | +<font color="red">PCSDK内部派发了以下几个内部消息,开发者可根据实际功能需要使用PCSDK.event api监听这些消息:</font> | |
9 | 9 | |
10 | -SDK中对微信小游戏的生命周期onShow/onHide处理后,会发送一个'app.show'/'app.hide'事件 | |
10 | +> 1、app.show:多平台的onShow事件消息,例如微信小游戏、QQ轻游戏的onShow事件。使用方式: | |
11 | +> | |
12 | +> **PCSDK.event.add( 'app.show' , 处理此消息的事件函数, 事件函数上下文)** | |
13 | + | |
14 | +> 2、app.hide: 多平台的onHide事件消息,例如微信小游戏、QQ轻游戏的onHide事件。使用方式: | |
15 | +> | |
16 | +> **PCSDK.event.add( 'app.hide' , 处理此消息的事件函数, 事件函数上下文)** | |
17 | + | |
18 | +> 3、tactic.update:推送策略更新事件消息,接入[分享视频模块(shareVideo)](share.md)后,某个功能点当前分享/视频完成后,下一次推送策略类型会通过这个消息发送处理,开发者监听这个消息,可处理游戏页面上的ui展示(如:视频分享icon、视频分享文案等),[查看完整示例](share.md#detail)。使用方式: | |
19 | +> | |
20 | +> **PCSDK.event.add( 'tactic.update' , 处理此消息的事件函数, 事件函数上下文)** | |
21 | + | |
22 | + | |
23 | +#### **接入API**: | |
24 | + | |
25 | +| **名称** | **功能说明** | | |
26 | +| ---------------- | ------------------------------------------------------------ | | |
27 | +| PCSDK.event.add | 添加一个事件监听:传入参数为事件类型名称、触发函数func、触发函数的执行上下文 | | |
28 | +| PCSDK.event.once | 添加一个事件监听,执行一次后会自动移除此事件监听 | | |
29 | +| PCSDK.event.emit | 触发事件监听:执行所绑定的事件类型对应的触发函数 | | |
30 | +| PCSDK.event.remove | 移除事件监听:移除添加的事件类型的触发函数 | | |
31 | +| PCSDK.event.removeAll | 移除所有事件监听:移除添加的事件类型下所有该类型的触发函数 | | |
32 | + | |
33 | +1. **add** | |
34 | + ```javascript | |
35 | + PCSDK.event.add( evt_name: string, listener: Function, context: any ): PCSDK.event | |
36 | + ``` | |
37 | + | |
38 | + 定义:添加一个事件监听:传入参数为事件类型名称、触发函数func、触发函数的执行上下文。与之对应的是移除事件监听:PCSDK.event.remove:页面销毁或者关闭的时候移除监听 | |
39 | + | |
40 | + 参数: | |
41 | + | |
42 | + ```javascript | |
43 | + evt_name: string 必传 事件类型名称 | |
44 | + | |
45 | + listener: Function 必传 触发函数func,事件处理监听函数 | |
46 | + | |
47 | + context: any 必传 触发函数func执行上下文 | |
48 | + ``` | |
49 | + 返回值: | |
50 | + | |
51 | + ```javascript | |
52 | + PCSDK.event | |
53 | + 返回的是event对象,方便链式调用, 例如: | |
54 | + PCSDK.event.add('update.money', () => { }, this ) | |
55 | + .add('update.exp', () => { }, this ); | |
56 | + ``` | |
57 | + <div id="event_add"></div> | |
58 | + 示例:游戏中进入Home场景监听金币更新函数,更新金币ui界面的值,关闭Home场景时,移除金币更新函数。 | |
59 | + | |
60 | + ```javascript | |
61 | + export default class HomeScene extends BaseView{ | |
62 | + protected addEvent() { | |
63 | + super.addEvent(); | |
64 | + // 添加注册金币更新事件监听 | |
65 | + PCSDK.event.add(EventEnum.UPDATE_MONEY, this.handleUpdateMoney, this); | |
66 | + } | |
67 | + | |
68 | + protected removeEvent() { | |
69 | + super.removeEvent(); | |
70 | + // 移除注册金币更新事件监听 | |
71 | + PCSDK.event.remove(EventEnum.UPDATE_MONEY, this.handleUpdateMoney, this); | |
72 | + } | |
73 | + | |
74 | + /** | |
75 | + * 更新金币ui | |
76 | + */ | |
77 | + private handleUpdateMoney( money: number ){ | |
78 | + this.txtCoin.text = `${money}`; | |
79 | + } | |
80 | + } | |
81 | + | |
82 | + /** | |
83 | + * event事件枚举 | |
84 | + */ | |
85 | + export enum EventEnum{ | |
86 | + UPDATE_MONEY = 'update.money' | |
87 | + } | |
88 | + ``` | |
89 | +2. **once** | |
90 | + ```javascript | |
91 | + PCSDK.event.once( evt_name: string, listener: Function, context?: any ): PCSDK.event | |
92 | + ``` | |
93 | + | |
94 | + 定义:添加一个事件监听,执行一次后会自动移除此事件监听 | |
95 | + | |
96 | + 参数: | |
97 | + | |
98 | + ```javascript | |
99 | + evt_name: string 必传 事件类型名称 | |
100 | + | |
101 | + listener: Function 必传 触发函数func,事件处理监听函数 | |
102 | + | |
103 | + context: any 必传 触发函数func执行上下文 | |
104 | + ``` | |
105 | + 返回值: | |
106 | + | |
107 | + ```javascript | |
108 | + PCSDK.event | |
109 | + 返回的是event对象,方便链式调用, 例如: | |
110 | + PCSDK.event.once('update.money', () => { }, this ) | |
111 | + .once('update.exp', () => { }, this ); | |
112 | + ``` | |
113 | + | |
114 | + 示例:游戏中进入Home场景监听金币更新函数一次,该函数执行完一次后会自动移除该监听事件函数。 | |
115 | + | |
116 | + ```javascript | |
117 | + export default class HomeScene extends BaseView{ | |
118 | + protected open(){ | |
119 | + super.open(); | |
120 | + // 添加一次注册金币更新事件监听,该事件监听执行一次后,自动移除 | |
121 | + PCSDK.event.once(EventEnum.UPDATE_MONEY, this.handleUpdateMoney, this); | |
122 | + } | |
123 | + | |
124 | + /** | |
125 | + * 更新金币ui | |
126 | + */ | |
127 | + private handleUpdateMoney( money: number ){ | |
128 | + this.txtCoin.text = `${money}`; | |
129 | + } | |
130 | + } | |
131 | + | |
132 | + /** | |
133 | + * event事件枚举 | |
134 | + */ | |
135 | + export enum EventEnum{ | |
136 | + UPDATE_MONEY = 'update.money' | |
137 | + } | |
138 | + ``` | |
139 | +3. **emit** | |
140 | + ```javascript | |
141 | + PCSDK.event.emit( evt_name: string, ...args: any[] ): PCSDK.event | |
142 | + ``` | |
143 | + | |
144 | + 定义:派发事件监听消息:执行所绑定的事件类型对应的触发函数,可以传递一些触发函数需要的其他任意参数 | |
145 | + | |
146 | + 参数: | |
147 | + | |
148 | + ```javascript | |
149 | + evt_name: string 必传 事件类型名称 | |
150 | + | |
151 | + args: any[] 选传 触发函数需要的其他任意参数 | |
152 | + ``` | |
153 | + 返回值: | |
154 | + | |
155 | + ```javascript | |
156 | + PCSDK.event | |
157 | + 返回的是event对象,方便链式调用, 例如: | |
158 | + PCSDK.event.emit('update.money', 10000) | |
159 | + .emit('update.exp', 2, 1000 ); | |
160 | + ``` | |
161 | + | |
162 | + 示例:游戏中金币领取奖励弹出框,点击领奖后派发金币更新的消息 | |
163 | + | |
164 | + ```javascript | |
165 | + // RewardCoinPopwin弹出框领奖励后,派发update.money消息 | |
166 | + export default class RewardCoinPopwin extends BaseView{ | |
167 | + private rewardCoin: number; | |
168 | + | |
169 | + protected open(){ | |
170 | + super.open(); | |
171 | + this.rewardCoin = 10000000; | |
172 | + } | |
173 | + | |
174 | + protected addEvent() { | |
175 | + super.addEvent(); | |
176 | + this.btnReward.on(Laya.Event.CLICK, this, this.onReward); | |
177 | + } | |
178 | + | |
179 | + protected removeEvent() { | |
180 | + super.removeEvent(); | |
181 | + this.btnReward.off(Laya.Event.CLICK, this, this.onReward); | |
182 | + } | |
183 | + | |
184 | + /** | |
185 | + * 金币领取奖励 | |
186 | + */ | |
187 | + private onReward(ev: Laya.Event){ | |
188 | + // 派发金币更新的消息,并把添加的金币传递 | |
189 | + PCSDK.event.emit(EventEnum.UPDATE_MONEY, this.rewardCoin ); | |
190 | + } | |
191 | + } | |
192 | + | |
193 | + // HomeScene监听update.money消息,处理加金币操作 | |
194 | + export default class HomeScene extends BaseView{ | |
195 | + protected addEvent() { | |
196 | + super.addEvent(); | |
197 | + // 添加注册金币更新事件监听 | |
198 | + PCSDK.event.add(EventEnum.UPDATE_MONEY, this.handleUpdateMoney, this); | |
199 | + } | |
200 | + | |
201 | + protected removeEvent() { | |
202 | + super.removeEvent(); | |
203 | + // 移除注册金币更新事件监听 | |
204 | + PCSDK.event.remove(EventEnum.UPDATE_MONEY, this.handleUpdateMoney, this); | |
205 | + } | |
206 | + | |
207 | + /** | |
208 | + * 更新金币ui | |
209 | + */ | |
210 | + private handleUpdateMoney( addMoney: number ){ | |
211 | + this.txtAddCoin.text = `${addMoney}`; | |
212 | + } | |
213 | + } | |
214 | + | |
215 | + /** | |
216 | + * event事件枚举 | |
217 | + */ | |
218 | + export enum EventEnum{ | |
219 | + UPDATE_MONEY = 'update.money' | |
220 | + } | |
221 | + ``` | |
222 | + | |
223 | +4. **remove** | |
224 | + ```javascript | |
225 | + PCSDK.event.remove( evt_name: string, listener: Function, context?: any ): PCSDK.event | |
226 | + ``` | |
227 | + | |
228 | + 定义:移除事件监听:移除添加的事件类型的触发函数。 | |
229 | + | |
230 | + 参数: | |
231 | + | |
232 | + ```javascript | |
233 | + evt_name: string 必传 事件类型名称 | |
234 | + | |
235 | + listener: Function 必传 触发函数func,事件处理监听函数 | |
236 | + | |
237 | + context: any 必传 触发函数func执行上下文 | |
238 | + ``` | |
239 | + 返回值: | |
240 | + | |
241 | + ```javascript | |
242 | + PCSDK.event | |
243 | + 返回的是event对象,方便链式调用, 例如: | |
244 | + PCSDK.event.remove('update.money', () => { }, this ) | |
245 | + .remove('update.exp', () => { }, this ); | |
246 | + ``` | |
247 | + | |
248 | + 示例:[见上例](event.md#event_add) | |
249 | + | |
250 | +5. **removeAll** | |
251 | + ```javascript | |
252 | + PCSDK.event.removeAll( evt_name: string ): PCSDK.event | |
253 | + ``` | |
254 | + | |
255 | + 定义:移除所有事件监听:移除添加的事件类型下所有该类型的触发函数 | |
256 | + | |
257 | + 参数: | |
258 | + | |
259 | + ```javascript | |
260 | + evt_name: string 必传 事件类型名称 | |
261 | + ``` | |
262 | + 返回值: | |
263 | + | |
264 | + ```javascript | |
265 | + PCSDK.event | |
266 | + 返回的是event对象,方便链式调用, 例如: | |
267 | + PCSDK.event.removeAll('update.money') | |
268 | + .removeAll('update.exp'); | |
269 | + ``` | |
270 | + | |
271 | + 示例: | |
272 | + | |
273 | + 移除游戏中所有update.money事件监听:PCSDK.event.removeAll('update.money'); | |
274 | + | |
275 | + 移除游戏中所有update.exp事件监听:PCSDK.event.removeAll('update.exp'); | ... | ... |
install.md
... | ... | @@ -79,6 +79,7 @@ |
79 | 79 | }, |
80 | 80 | GameId: 0, // 必填,游戏ID,运营提供; |
81 | 81 | ChannelId: 0, // 必填,游戏渠道ID,运营提供; |
82 | + IntegralChannelId: 0, // 必填,积分投放渠道ID,运营提供; | |
82 | 83 | Secret: '***请配置你的Secret***', // 必填,游戏的secret key |
83 | 84 | MidasPay: { // 米大师虚拟支付配置 |
84 | 85 | OfferId: "0", // 在米大师申请的应用id |
... | ... | @@ -179,9 +180,11 @@ |
179 | 180 | |
180 | 181 | 10. **ChannelId:必填,游戏渠道id,请联系运营人员提供** |
181 | 182 | |
182 | -11. **Secret:必填,游戏 Secret Key,请联系运营人员提供** | |
183 | +11. **IntegralChannelId:必填,积分投放渠道ID,运营提供** | |
183 | 184 | |
184 | -12. **MidasPay( object ):**米大水虚拟支付配置,没有接入微信的米大师支付,请注意下面规则 | |
185 | +12. **Secret:必填,游戏 Secret Key,请联系运营人员提供** | |
186 | + | |
187 | +13. **MidasPay( object ):**米大水虚拟支付配置,没有接入微信的米大师支付,请注意下面规则 | |
185 | 188 | |
186 | 189 | OfferId:在米大师申请的应用id,没有接入米大师,默认为"0" |
187 | 190 | ... | ... |
platform.md
share.md
... | ... | @@ -410,7 +410,6 @@ |
410 | 410 | 3、<font color="#FF0000">分享或者视频后,SDK会发送一个tactic.update的消息过来,使用PCSDK.event.add注册监听,PCSDK.event.remove移除监听(PCSDK.event详细了解请查看[事件模块](event.md)),监听事件处理下一次推送显示ui状态:执行一下initRewardUI。</font> |
411 | 411 | |
412 | 412 | 4、给三个按钮都注册事件:onReward |
413 | - | |
414 | 413 | ```javascript |
415 | 414 | // DiamondDoublePopwin.ts文件 |
416 | 415 | export default class DiamondDoublePopwin extends BaseView { |
... | ... | @@ -427,27 +426,27 @@ |
427 | 426 | } |
428 | 427 | |
429 | 428 | protected removeEvent() { |
430 | - super.removeEvent(); | |
431 | - this.btnFree.off(Laya.Event.CLICK, this, this.onReward); | |
432 | - this.btnShare.off(Laya.Event.CLICK, this, this.onReward); | |
433 | - this.btnVideo.off(Laya.Event.CLICK, this, this.onReward); | |
434 | - // PCSDK.event.remove移除监听SDK发送的消息:tactic.update | |
435 | - PCSDK.event.remove('tactic.update', this.initRewardUI, this); | |
429 | + super.removeEvent(); | |
430 | + this.btnFree.off(Laya.Event.CLICK, this, this.onReward); | |
431 | + this.btnShare.off(Laya.Event.CLICK, this, this.onReward); | |
432 | + this.btnVideo.off(Laya.Event.CLICK, this, this.onReward); | |
433 | + // PCSDK.event.remove移除监听SDK发送的消息:tactic.update | |
434 | + PCSDK.event.remove('tactic.update', this.initRewardUI, this); | |
436 | 435 | } |
437 | 436 | |
438 | 437 | // 每次打开此popwin执行onOpen |
439 | 438 | protected onOpen(){ |
440 | - super.onOpen(); | |
441 | - // 界面打开 | |
442 | - this.initRewardUI(); | |
439 | + super.onOpen(); | |
440 | + // 界面打开 | |
441 | + this.initRewardUI(); | |
443 | 442 | } |
444 | 443 | |
445 | 444 | // 领取奖励操作 |
446 | 445 | private onReward(){ |
447 | - PCSDK.shareVideo.dispatch( ShareVideoKeys.DiamondDouble.toString(), { | |
446 | + PCSDK.shareVideo.dispatch( ShareVideoKeys.DiamondDouble.toString(), { | |
448 | 447 | success: this.handleReward, |
449 | 448 | context: this |
450 | - } ) | |
449 | + } ); | |
451 | 450 | } |
452 | 451 | |
453 | 452 | // 分享/视频成功后回调处理函数:发奖励 |
... | ... | @@ -472,7 +471,7 @@ |
472 | 471 | case ShareVideoType.Share: // 同步分享 |
473 | 472 | case ShareVideoType.ShareAysnc: // 异步分享 |
474 | 473 | case ShareVideoType.ShareIntegral: // 分享积分 |
475 | - // 分享ui状态 | |
474 | + // 分享ui状态 | |
476 | 475 | this.stat_share.play(0,false); |
477 | 476 | // 等同于 |
478 | 477 | // this.btnFree.visible = false; |
... | ... | @@ -482,7 +481,7 @@ |
482 | 481 | |
483 | 482 | case ShareVideoType.Video: // 视频 |
484 | 483 | case ShareVideoType.VideoToShare: // 无视频则分享 |
485 | - // 视频ui状态 | |
484 | + // 视频ui状态 | |
486 | 485 | this.stat_video.play(0,false); |
487 | 486 | // 等同于 |
488 | 487 | // this.btnFree.visible = false; |
... | ... | @@ -491,7 +490,7 @@ |
491 | 490 | break; |
492 | 491 | |
493 | 492 | default: // 无视频和无分享 |
494 | - // 既不显示分享ui又不显示视频ui,直接领奖ui状态 | |
493 | + // 既不显示分享ui又不显示视频ui,直接领奖ui状态 | |
495 | 494 | this.stat_free.play(0,false); |
496 | 495 | // 等同于 |
497 | 496 | // this.btnFree.visible = true; | ... | ... |