小程序 SDK使用
文档白板小程序SDK使用说明
微吼云文档小程序,目前实现了发起、观看端的自由画笔和橡皮擦、清空画布、多端绘制、切换权限功能
当前未考虑横竖屏切换的情况,默认竖屏; 观看端组件的宽度为 canvas 画布宽,组件的高 = 当前组件宽度/发起端画布的宽 * 发起端画布高 计算得出
目录结构
- index 为入口文件夹
- docWatch 为 观看端 demo 示例(先在 vhallyun 演示端发起文档直播)
- docAct 为发起端 demo 示例
- components 下的 vhallDoc 为文档组件
- 其余为微信小程序必要文件
使用方法如下
- wxml 中引入 vhallDoc 组件,并挂载监听函数(组件可以从 git 上拿到)
<vhallDoc
id="vhallDoc"
doc-data="{{docData}}"
bind:pageChange="pageChange"
bind:destroyContainer="destroyContainer"
bind:createContainer="createContainer"
bind:getDocSdk="getDocSdk"
bind:activeContainer="activeContainer"
bind:switchChange="switchChange"
bind:loadDocSucc="loadDocSucc"
bind:loadDocFail="loadDocFail"
></vhallDoc>
- docData 为初始化 sdk 所必须的数据,建议在页面的 onLoad 函数中用 wx:if 显示 vhallDoc 组件,避免传入的 doc-data 数据错误,传入 doc-data 的数据格式:
/**
* 均为必传参数
*/
docData: {
appId: '',
channelId: '',
roomId: '',
accountId: '',
token: ''
}
观看端监听方法说明:
文档加载完成
/**
* 文档加载完成
* id 当前正在演示的文档id
* type 当前正在演示的文档类型 document | board | '' (文档|白板|当前没有实例)
* slideIndex 当前页
* slidesTotal 总页数
* switchStatus 当前演示端文档开关状态 on - 打开 | off - 关闭
*/
loadDocSucc({
detail: { id, type, slideIndex, slidesTotal, switchStatus }
}) {
console.log({
id,
type,
slideIndex,
slidesTotal,
switchStatus
})
},
文档加载失败
/**
* 文档加载失败函数
* e - ajax 失败回调信息
*/
loadDocFail(e) {
console.log('文档加载失败', e)
},
文档翻页完成
/**
* 文档翻页完成后触发
* slideIndex 当前页
* slidesTotal 总页数
*/
pageChange({ detail: { slideIndex, slidesTotal } }) {
this.setData({ slidesTotal, slideIndex })
console.log('翻页了', { slideIndex, slidesTotal })
},
收到销毁容器后触发
/**
* 收到销毁容器后触发
* id 销毁容器的id
*/
destroyContainer({ detail: { id} }) {
console.log(
`文档已被销毁,被销毁的文档id为:${id}`
)
},
收到创建容器后触发
/**
* 收到创建容器后触发
* id 创建容器的id
* type 创建容器类型 board | document (白板 / 文档)
*/
createContainer({ detail: { id, type } }) {
console.log('创建容器', { id, type })
},
sdk实例化完成后触发
/**
* sdk实例化完成后触发
* docSdk sdk句柄
* roleType为切换主持人的常量,主持端使用,目前只实现了主讲人和普通观众
*/
getDocSdk({ detail: { docSdk,roleType } }) {
this.docSdk = docSdk
this.roleType = roleType
this.setRole(this.roleType.HOST)
},
收到切换容器后触发
/**
* 收到切换容器后触发
* id 当前正在演示的容器id
* type:document/board (文档、白板)当前正在演示的doc类型
* slideIndex type为 document 时表示当前页码,type为 board 时为 0
* slidesTotal type为 document 时表示当前doc总页码,type为 board 时为 0
*/
activeContainer({ detail: { id, slidesTotal, slideIndex, type } }) {
console.log('激活文档', id, slidesTotal, slideIndex, type)
},
收到打开,关闭演示开关后触发
/**
* 演示端打开,关闭演示开关后触发
* switchStatus:on - 打开 | off - 关闭
*/
switchChange({ detail: { switchStatus } }) {
console.log({ switchStatus })
}
演示端监听方法说明:
上一页
/**
* 上一页
*/
prev() {
this.vhallDoc._prev()
},
下一页
/**
* 下一页
*/
next() {
this.vhallDoc._next()
},
新建文档
/**
* 新建文档
* @param {String} - docId 文档id
* @param {Number} - width 文档宽度
* @param {Number} - height 文档高度
*/
createDoc() {
this.vhallDoc._createDoc({
documentId: docId,
cw: width,
ch: height
})
},
新建白板
/**
* 新建白板
* @param {String} - width - 画板的宽
* @param {String} - height - 画板的高
* @param {String} - backgroundColor - 画板背景色
*/
createBoard() {
this.vhallDoc._createBoard({
cw: width,
ch: height,
backgroundColor
})
},
修改画笔颜色
/**
* 修改画笔颜色
* @param {String} - color 画笔颜色
*/
changeColor(color) {
this.vhallDoc._setStroke(color)
},
修改画笔宽度
/**
* 修改画笔宽度
* @param {Number} - 画笔宽度 单位 px
*/
changeWidth(width) {
this.vhallDoc._setStrokeWidth(width)
},
清空画布
/**
* 清空画布
*/
clearCanvas() {
this.vhallDoc._clearCanvas()
},
设置当前操作为橡皮擦
/**
* 设置当前操作为橡皮擦
*/
setEraser() {
this.vhallDoc._setEraser()
},
选择自由画笔
/**
* 选择自由画笔
*/
choosePencial() {
this.vhallDoc._setPen()
wx.showToast({
title: '当前选择自由画笔~',
icon: 'none',
duration: 2000
})
},
观众是否可见 - 打开开关
/**
* 观众是否可见 - 打开开关
*/
this.vhallDoc._switchOnContainer()
观众是否可见 - 关闭开关
/**
* 观众是否可见 - 关闭开关
*/
this.vhallDoc._switchOffContainer()
设置为主讲人
/**
* 设置为主讲人
*/
setRole(e) {
this.vhallDoc._setRole(e)
},
销毁当前容器
/**
* 销毁当前容器
*/
sendDestroy() {
this.vhallDoc._destroyContainer()
}
