From e6f13bf69475fd4854ad5072112cf681e998bfe4 Mon Sep 17 00:00:00 2001 From: 小川 费 <449111130@qq.com> Date: Thu, 19 Sep 2019 16:08:49 +0800 Subject: [PATCH] 1 --- data.md | 2 +- download.md | 19 ++++++++++--------- event.md | 271 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- install.md | 7 +++++-- platform.md | 2 +- share.md | 29 ++++++++++++++--------------- 6 files changed, 299 insertions(+), 31 deletions(-) diff --git a/data.md b/data.md index 4aedcd4..26e7b8b 100644 --- a/data.md +++ b/data.md @@ -5,7 +5,7 @@ #### **简介** -此模块为开发者提供游戏用到的一些数据信息,例如:config.js配置的GameId,ChannelId、从分享链接进入query携带的参数(share_id/share_key/invite_user_uid/channel_id)、setLogind设置的用户ID(userId)和用户注册时间(regTime)等等,详细请阅读下面的api。 +此模块为开发者提供游戏用到的一些数据信息,例如:config.js配置的GameId,ChannelId、从分享链接进入query携带的参数(share_id/share_key/user_invite_uid/channel_id)、setLogind设置的用户ID(userId)和用户注册时间(regTime)等等,详细请阅读下面的api。 diff --git a/download.md b/download.md index 3a515f0..1705ea9 100644 --- a/download.md +++ b/download.md @@ -8,8 +8,9 @@ **新增:** -1. 移除掉stat模块的onlineTimeLen和logout api -2. 微信小游戏引入GameIcon、GameBanner、GamePortal组件 +1. 移除掉stat模块的onlineTimeLen和logout api。 +2. 微信小游戏引入GameIcon、GameBanner、GamePortal组件。 +3. config.js添加积分投放IntegralChannelId参数,用于积分投放渠道统计。 ## [v1.0.0.2 下载](https://dep.miso-lab.com/sdkword/versions/sdk-out-v1.0.0.2.zip) @@ -21,7 +22,7 @@ **新增:** -1. 外部游戏修改setLogind接口为setLoginInfo( { openId: strinng , retTime: number } ); +1. 外部游戏修改setLogind接口为setLoginInfo( { openId: strinng , retTime: number } )。 2. loadingFinish传递isActive参数,isActive为true SDK在loadingFinish结束后自动调用active。 ## [v1.0.0.1 下载](https://dep.miso-lab.com/sdkword/versions/sdk-out-v1.0.0.1.zip) @@ -46,15 +47,15 @@ **修复:** -1. SDK外部版本不需要接入方调用stat 模块launch接口,SDK启动时候自动调用 -2. QQ轻游戏分享不成功回调的问题 -3. QQ轻游戏banner广告不贴底部的问题 +1. SDK外部版本不需要接入方调用stat 模块launch接口,SDK启动时候自动调用。 +2. QQ轻游戏分享不成功回调的问题。 +3. QQ轻游戏banner广告不贴底部的问题。 **新增:** -1. config.js配置新增IsOnlineAutoUse、IsOnlineDebug、ShareRightKey配置参数 +1. config.js配置新增IsOnlineAutoUse、IsOnlineDebug、ShareRightKey配置参数。 - 在线参数获取通过配置决定是否启动拉取,右上角分享配置进行读取shareKey + 在线参数获取通过配置决定是否启动拉取,右上角分享配置进行读取shareKey。 -2. SDK分享模块不区分内部还是外部游戏,都引入分享/视频模块功能 +2. SDK分享模块不区分内部还是外部游戏,都引入分享/视频模块功能。 diff --git a/event.md b/event.md index 2b9302f..220605f 100644 --- a/event.md +++ b/event.md @@ -3,8 +3,273 @@ 事件本质是一种通信方式,是一种消息,只有存在多个对象,多个模块的情况下,才有可能需要用到事件进行通信。 -有时我们还需要自定义事件以满足特定的需求,比如小模块之间的通信,传递信息等。开发者游戏项目和PCSDK属于两个不同的模块,PCSDK会在SDK内部处理一些业务,想要把这些处理结果告知开发者,那么自定义事件就派上用场了。 +开发者游戏项目和PCSDK属于两个不同的模块,PCSDK会在SDK内部处理一些业务,想要把这些处理结果告知开发者,那么自定义事件就派上用场了,SDK封装了一个event模块:PCSDK.event,开发者可使用这个模块接收SDK内部派发的消息,也可以应用在游戏中不同模块中通信的情况。 -例如: +PCSDK内部派发了以下几个内部消息,开发者可根据实际功能需要使用PCSDK.event api监听这些消息: -SDK中对微信小游戏的生命周期onShow/onHide处理后,会发送一个'app.show'/'app.hide'事件 +> 1、app.show:多平台的onShow事件消息,例如微信小游戏、QQ轻游戏的onShow事件。使用方式: +> +> **PCSDK.event.add( 'app.show' , 处理此消息的事件函数, 事件函数上下文)** + +> 2、app.hide: 多平台的onHide事件消息,例如微信小游戏、QQ轻游戏的onHide事件。使用方式: +> +> **PCSDK.event.add( 'app.hide' , 处理此消息的事件函数, 事件函数上下文)** + +> 3、tactic.update:推送策略更新事件消息,接入[分享视频模块(shareVideo)](share.md)后,某个功能点当前分享/视频完成后,下一次推送策略类型会通过这个消息发送处理,开发者监听这个消息,可处理游戏页面上的ui展示(如:视频分享icon、视频分享文案等),[查看完整示例](share.md#detail)。使用方式: +> +> **PCSDK.event.add( 'tactic.update' , 处理此消息的事件函数, 事件函数上下文)** + + +#### **接入API**: + +| **名称** | **功能说明** | +| ---------------- | ------------------------------------------------------------ | +| PCSDK.event.add | 添加一个事件监听:传入参数为事件类型名称、触发函数func、触发函数的执行上下文 | +| PCSDK.event.once | 添加一个事件监听,执行一次后会自动移除此事件监听 | +| PCSDK.event.emit | 触发事件监听:执行所绑定的事件类型对应的触发函数 | +| PCSDK.event.remove | 移除事件监听:移除添加的事件类型的触发函数 | +| PCSDK.event.removeAll | 移除所有事件监听:移除添加的事件类型下所有该类型的触发函数 | + +1. **add** + ```javascript + PCSDK.event.add( evt_name: string, listener: Function, context: any ): PCSDK.event + ``` + + 定义:添加一个事件监听:传入参数为事件类型名称、触发函数func、触发函数的执行上下文。与之对应的是移除事件监听:PCSDK.event.remove:页面销毁或者关闭的时候移除监听 + + 参数: + + ```javascript + evt_name: string 必传 事件类型名称 + + listener: Function 必传 触发函数func,事件处理监听函数 + + context: any 必传 触发函数func执行上下文 + ``` + 返回值: + + ```javascript + PCSDK.event + 返回的是event对象,方便链式调用, 例如: + PCSDK.event.add('update.money', () => { }, this ) + .add('update.exp', () => { }, this ); + ``` +
+ 示例:游戏中进入Home场景监听金币更新函数,更新金币ui界面的值,关闭Home场景时,移除金币更新函数。 + + ```javascript + export default class HomeScene extends BaseView{ + protected addEvent() { + super.addEvent(); + // 添加注册金币更新事件监听 + PCSDK.event.add(EventEnum.UPDATE_MONEY, this.handleUpdateMoney, this); + } + + protected removeEvent() { + super.removeEvent(); + // 移除注册金币更新事件监听 + PCSDK.event.remove(EventEnum.UPDATE_MONEY, this.handleUpdateMoney, this); + } + + /** + * 更新金币ui + */ + private handleUpdateMoney( money: number ){ + this.txtCoin.text = `${money}`; + } + } + + /** + * event事件枚举 + */ + export enum EventEnum{ + UPDATE_MONEY = 'update.money' + } + ``` +2. **once** + ```javascript + PCSDK.event.once( evt_name: string, listener: Function, context?: any ): PCSDK.event + ``` + + 定义:添加一个事件监听,执行一次后会自动移除此事件监听 + + 参数: + + ```javascript + evt_name: string 必传 事件类型名称 + + listener: Function 必传 触发函数func,事件处理监听函数 + + context: any 必传 触发函数func执行上下文 + ``` + 返回值: + + ```javascript + PCSDK.event + 返回的是event对象,方便链式调用, 例如: + PCSDK.event.once('update.money', () => { }, this ) + .once('update.exp', () => { }, this ); + ``` + + 示例:游戏中进入Home场景监听金币更新函数一次,该函数执行完一次后会自动移除该监听事件函数。 + + ```javascript + export default class HomeScene extends BaseView{ + protected open(){ + super.open(); + // 添加一次注册金币更新事件监听,该事件监听执行一次后,自动移除 + PCSDK.event.once(EventEnum.UPDATE_MONEY, this.handleUpdateMoney, this); + } + + /** + * 更新金币ui + */ + private handleUpdateMoney( money: number ){ + this.txtCoin.text = `${money}`; + } + } + + /** + * event事件枚举 + */ + export enum EventEnum{ + UPDATE_MONEY = 'update.money' + } + ``` +3. **emit** + ```javascript + PCSDK.event.emit( evt_name: string, ...args: any[] ): PCSDK.event + ``` + + 定义:派发事件监听消息:执行所绑定的事件类型对应的触发函数,可以传递一些触发函数需要的其他任意参数 + + 参数: + + ```javascript + evt_name: string 必传 事件类型名称 + + args: any[] 选传 触发函数需要的其他任意参数 + ``` + 返回值: + + ```javascript + PCSDK.event + 返回的是event对象,方便链式调用, 例如: + PCSDK.event.emit('update.money', 10000) + .emit('update.exp', 2, 1000 ); + ``` + + 示例:游戏中金币领取奖励弹出框,点击领奖后派发金币更新的消息 + + ```javascript + // RewardCoinPopwin弹出框领奖励后,派发update.money消息 + export default class RewardCoinPopwin extends BaseView{ + private rewardCoin: number; + + protected open(){ + super.open(); + this.rewardCoin = 10000000; + } + + protected addEvent() { + super.addEvent(); + this.btnReward.on(Laya.Event.CLICK, this, this.onReward); + } + + protected removeEvent() { + super.removeEvent(); + this.btnReward.off(Laya.Event.CLICK, this, this.onReward); + } + + /** + * 金币领取奖励 + */ + private onReward(ev: Laya.Event){ + // 派发金币更新的消息,并把添加的金币传递 + PCSDK.event.emit(EventEnum.UPDATE_MONEY, this.rewardCoin ); + } + } + + // HomeScene监听update.money消息,处理加金币操作 + export default class HomeScene extends BaseView{ + protected addEvent() { + super.addEvent(); + // 添加注册金币更新事件监听 + PCSDK.event.add(EventEnum.UPDATE_MONEY, this.handleUpdateMoney, this); + } + + protected removeEvent() { + super.removeEvent(); + // 移除注册金币更新事件监听 + PCSDK.event.remove(EventEnum.UPDATE_MONEY, this.handleUpdateMoney, this); + } + + /** + * 更新金币ui + */ + private handleUpdateMoney( addMoney: number ){ + this.txtAddCoin.text = `${addMoney}`; + } + } + + /** + * event事件枚举 + */ + export enum EventEnum{ + UPDATE_MONEY = 'update.money' + } + ``` + +4. **remove** + ```javascript + PCSDK.event.remove( evt_name: string, listener: Function, context?: any ): PCSDK.event + ``` + + 定义:移除事件监听:移除添加的事件类型的触发函数。 + + 参数: + + ```javascript + evt_name: string 必传 事件类型名称 + + listener: Function 必传 触发函数func,事件处理监听函数 + + context: any 必传 触发函数func执行上下文 + ``` + 返回值: + + ```javascript + PCSDK.event + 返回的是event对象,方便链式调用, 例如: + PCSDK.event.remove('update.money', () => { }, this ) + .remove('update.exp', () => { }, this ); + ``` + + 示例:[见上例](event.md#event_add) + +5. **removeAll** + ```javascript + PCSDK.event.removeAll( evt_name: string ): PCSDK.event + ``` + + 定义:移除所有事件监听:移除添加的事件类型下所有该类型的触发函数 + + 参数: + + ```javascript + evt_name: string 必传 事件类型名称 + ``` + 返回值: + + ```javascript + PCSDK.event + 返回的是event对象,方便链式调用, 例如: + PCSDK.event.removeAll('update.money') + .removeAll('update.exp'); + ``` + + 示例: + + 移除游戏中所有update.money事件监听:PCSDK.event.removeAll('update.money'); + + 移除游戏中所有update.exp事件监听:PCSDK.event.removeAll('update.exp'); diff --git a/install.md b/install.md index eca66f2..0b6a9bd 100644 --- a/install.md +++ b/install.md @@ -79,6 +79,7 @@ }, GameId: 0, // 必填,游戏ID,运营提供; ChannelId: 0, // 必填,游戏渠道ID,运营提供; + IntegralChannelId: 0, // 必填,积分投放渠道ID,运营提供; Secret: '***请配置你的Secret***', // 必填,游戏的secret key MidasPay: { // 米大师虚拟支付配置 OfferId: "0", // 在米大师申请的应用id @@ -179,9 +180,11 @@ 10. **ChannelId:必填,游戏渠道id,请联系运营人员提供** -11. **Secret:必填,游戏 Secret Key,请联系运营人员提供** +11. **IntegralChannelId:必填,积分投放渠道ID,运营提供** -12. **MidasPay( object ):**米大水虚拟支付配置,没有接入微信的米大师支付,请注意下面规则 +12. **Secret:必填,游戏 Secret Key,请联系运营人员提供** + +13. **MidasPay( object ):**米大水虚拟支付配置,没有接入微信的米大师支付,请注意下面规则 OfferId:在米大师申请的应用id,没有接入米大师,默认为"0" diff --git a/platform.md b/platform.md index 4601fcf..7011f02 100644 --- a/platform.md +++ b/platform.md @@ -1,4 +1,4 @@ -# 启动注册打点 +# 多平台接口模块 ------ diff --git a/share.md b/share.md index d1fb36b..3dd9e67 100644 --- a/share.md +++ b/share.md @@ -410,7 +410,6 @@ 3、分享或者视频后,SDK会发送一个tactic.update的消息过来,使用PCSDK.event.add注册监听,PCSDK.event.remove移除监听(PCSDK.event详细了解请查看[事件模块](event.md)),监听事件处理下一次推送显示ui状态:执行一下initRewardUI。 4、给三个按钮都注册事件:onReward - ```javascript // DiamondDoublePopwin.ts文件 export default class DiamondDoublePopwin extends BaseView { @@ -427,27 +426,27 @@ } protected removeEvent() { - super.removeEvent(); - this.btnFree.off(Laya.Event.CLICK, this, this.onReward); - this.btnShare.off(Laya.Event.CLICK, this, this.onReward); - this.btnVideo.off(Laya.Event.CLICK, this, this.onReward); - // PCSDK.event.remove移除监听SDK发送的消息:tactic.update - PCSDK.event.remove('tactic.update', this.initRewardUI, this); + super.removeEvent(); + this.btnFree.off(Laya.Event.CLICK, this, this.onReward); + this.btnShare.off(Laya.Event.CLICK, this, this.onReward); + this.btnVideo.off(Laya.Event.CLICK, this, this.onReward); + // PCSDK.event.remove移除监听SDK发送的消息:tactic.update + PCSDK.event.remove('tactic.update', this.initRewardUI, this); } // 每次打开此popwin执行onOpen protected onOpen(){ - super.onOpen(); - // 界面打开 - this.initRewardUI(); + super.onOpen(); + // 界面打开 + this.initRewardUI(); } // 领取奖励操作 private onReward(){ - PCSDK.shareVideo.dispatch( ShareVideoKeys.DiamondDouble.toString(), { + PCSDK.shareVideo.dispatch( ShareVideoKeys.DiamondDouble.toString(), { success: this.handleReward, context: this - } ) + } ); } // 分享/视频成功后回调处理函数:发奖励 @@ -472,7 +471,7 @@ case ShareVideoType.Share: // 同步分享 case ShareVideoType.ShareAysnc: // 异步分享 case ShareVideoType.ShareIntegral: // 分享积分 - // 分享ui状态 + // 分享ui状态 this.stat_share.play(0,false); // 等同于 // this.btnFree.visible = false; @@ -482,7 +481,7 @@ case ShareVideoType.Video: // 视频 case ShareVideoType.VideoToShare: // 无视频则分享 - // 视频ui状态 + // 视频ui状态 this.stat_video.play(0,false); // 等同于 // this.btnFree.visible = false; @@ -491,7 +490,7 @@ break; default: // 无视频和无分享 - // 既不显示分享ui又不显示视频ui,直接领奖ui状态 + // 既不显示分享ui又不显示视频ui,直接领奖ui状态 this.stat_free.play(0,false); // 等同于 // this.btnFree.visible = true; -- libgit2 0.21.0