Commit e6f13bf69475fd4854ad5072112cf681e998bfe4

Authored by 小川 费
1 parent 598d14fd
Exists in master

1

@@ -5,7 +5,7 @@ @@ -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
@@ -8,8 +8,9 @@ @@ -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 ## [v1.0.0.2 下载](https://dep.miso-lab.com/sdkword/versions/sdk-out-v1.0.0.2.zip) 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,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 2. loadingFinish传递isActive参数,isActive为true SDK在loadingFinish结束后自动调用active。 26 2. loadingFinish传递isActive参数,isActive为true SDK在loadingFinish结束后自动调用active。
26 27
27 ## [v1.0.0.1 下载](https://dep.miso-lab.com/sdkword/versions/sdk-out-v1.0.0.1.zip) 28 ## [v1.0.0.1 下载](https://dep.miso-lab.com/sdkword/versions/sdk-out-v1.0.0.1.zip)
@@ -46,15 +47,15 @@ @@ -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
@@ -3,8 +3,273 @@ @@ -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');
@@ -79,6 +79,7 @@ @@ -79,6 +79,7 @@
79 }, 79 },
80 GameId: 0, // 必填,游戏ID,运营提供; 80 GameId: 0, // 必填,游戏ID,运营提供;
81 ChannelId: 0, // 必填,游戏渠道ID,运营提供; 81 ChannelId: 0, // 必填,游戏渠道ID,运营提供;
  82 + IntegralChannelId: 0, // 必填,积分投放渠道ID,运营提供;
82 Secret: '***请配置你的Secret***', // 必填,游戏的secret key 83 Secret: '***请配置你的Secret***', // 必填,游戏的secret key
83 MidasPay: { // 米大师虚拟支付配置 84 MidasPay: { // 米大师虚拟支付配置
84 OfferId: "0", // 在米大师申请的应用id 85 OfferId: "0", // 在米大师申请的应用id
@@ -179,9 +180,11 @@ @@ -179,9 +180,11 @@
179 180
180 10. **ChannelId:必填,游戏渠道id,请联系运营人员提供** 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 OfferId:在米大师申请的应用id,没有接入米大师,默认为"0" 189 OfferId:在米大师申请的应用id,没有接入米大师,默认为"0"
187 190
1 -# 启动注册打点 1 +# 多平台接口模块
2 2
3 ------ 3 ------
4 4
@@ -410,7 +410,6 @@ @@ -410,7 +410,6 @@
410 3、<font color="#FF0000">分享或者视频后,SDK会发送一个tactic.update的消息过来,使用PCSDK.event.add注册监听,PCSDK.event.remove移除监听(PCSDK.event详细了解请查看[事件模块](event.md)),监听事件处理下一次推送显示ui状态:执行一下initRewardUI。</font> 410 3、<font color="#FF0000">分享或者视频后,SDK会发送一个tactic.update的消息过来,使用PCSDK.event.add注册监听,PCSDK.event.remove移除监听(PCSDK.event详细了解请查看[事件模块](event.md)),监听事件处理下一次推送显示ui状态:执行一下initRewardUI。</font>
411 411
412 4、给三个按钮都注册事件:onReward 412 4、给三个按钮都注册事件:onReward
413 -  
414 ```javascript 413 ```javascript
415 // DiamondDoublePopwin.ts文件 414 // DiamondDoublePopwin.ts文件
416 export default class DiamondDoublePopwin extends BaseView { 415 export default class DiamondDoublePopwin extends BaseView {
@@ -427,27 +426,27 @@ @@ -427,27 +426,27 @@
427 } 426 }
428 427
429 protected removeEvent() { 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 // 每次打开此popwin执行onOpen 437 // 每次打开此popwin执行onOpen
439 protected onOpen(){ 438 protected onOpen(){
440 - super.onOpen();  
441 - // 界面打开  
442 - this.initRewardUI(); 439 + super.onOpen();
  440 + // 界面打开
  441 + this.initRewardUI();
443 } 442 }
444 443
445 // 领取奖励操作 444 // 领取奖励操作
446 private onReward(){ 445 private onReward(){
447 - PCSDK.shareVideo.dispatch( ShareVideoKeys.DiamondDouble.toString(), { 446 + PCSDK.shareVideo.dispatch( ShareVideoKeys.DiamondDouble.toString(), {
448 success: this.handleReward, 447 success: this.handleReward,
449 context: this 448 context: this
450 - } ) 449 + } );
451 } 450 }
452 451
453 // 分享/视频成功后回调处理函数:发奖励 452 // 分享/视频成功后回调处理函数:发奖励
@@ -472,7 +471,7 @@ @@ -472,7 +471,7 @@
472 case ShareVideoType.Share: // 同步分享 471 case ShareVideoType.Share: // 同步分享
473 case ShareVideoType.ShareAysnc: // 异步分享 472 case ShareVideoType.ShareAysnc: // 异步分享
474 case ShareVideoType.ShareIntegral: // 分享积分 473 case ShareVideoType.ShareIntegral: // 分享积分
475 - // 分享ui状态 474 + // 分享ui状态
476 this.stat_share.play(0,false); 475 this.stat_share.play(0,false);
477 // 等同于 476 // 等同于
478 // this.btnFree.visible = false; 477 // this.btnFree.visible = false;
@@ -482,7 +481,7 @@ @@ -482,7 +481,7 @@
482 481
483 case ShareVideoType.Video: // 视频 482 case ShareVideoType.Video: // 视频
484 case ShareVideoType.VideoToShare: // 无视频则分享 483 case ShareVideoType.VideoToShare: // 无视频则分享
485 - // 视频ui状态 484 + // 视频ui状态
486 this.stat_video.play(0,false); 485 this.stat_video.play(0,false);
487 // 等同于 486 // 等同于
488 // this.btnFree.visible = false; 487 // this.btnFree.visible = false;
@@ -491,7 +490,7 @@ @@ -491,7 +490,7 @@
491 break; 490 break;
492 491
493 default: // 无视频和无分享 492 default: // 无视频和无分享
494 - // 既不显示分享ui又不显示视频ui,直接领奖ui状态 493 + // 既不显示分享ui又不显示视频ui,直接领奖ui状态
495 this.stat_free.play(0,false); 494 this.stat_free.play(0,false);
496 // 等同于 495 // 等同于
497 // this.btnFree.visible = true; 496 // this.btnFree.visible = true;