Skip to content

场景

new Scene(id, options)

初始化场景

  • 参数:

    • {String} id 【必选】根渲染节点的DOM id
    • {Object} options 【必选】渲染参数,options的参数如下表

options参数如下表

参数类型是否必选说明
serverstring必选服务地址
autoStopboolean可选是否30秒不操作自动断开连接,默认false
entranceboolean可选是否自动播放入场动画,默认false
netStatsboolean可选是否显示网络状态,默认false
fullscreenboolean可选是否显示全屏按钮,默认false
leaveTipsboolean可选离开页面(关闭、刷新)是否提示,默认false
audioboolean可选开启声音,默认 true
audioPermissionTipsboolean可选当无声音播放的权限时,是否要弹窗提示
turnServerobject可选是否使用公网访问
    enableboolean可选启用公网访问,默认 false
    urlsstring,array可选TURN服务器地址,可以是字符串,也可以是数组
    namestring可选用户名
    passstring可选密码
syncboolean可选是否多客户端场景消息同步,默认false
syncServerstring可选消息同步的Server
syncClientIdstring可选标识客户端的Id,字符类型,默认为客户端的指纹信息
keyboardIgnoreListarray可选设置要忽略的按键(忽略的不会将按键指令发送到后台)
默认:["F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "Tab", "`"]
  • 返回:

    • 实例化的scene对象
  • 详情:

通过传入DOM id和渲染参数,调用 new Scene(id, options) 生成场景。

  • 示例:
html
<body>
  <div id="kapi-container"></div>
</body>
js
import KAPI from '@ibrucekong/kapi'
const kapi = await KAPI.build('Your Auth Token')

const scene = new kapi.Scene('kapi-container', { server: 'Your Service URL' })
console.log(scene)

ready()

等待场景初始化完成。

  • 参数:

    • {Number} timeout 超时时间,默认30秒,最低5秒
  • 返回:

    • 场景初始化是否完成的状态信息
  • 详情:

云渲染场景加载需要一定的时间完成场景加载,在初始化后,需要等待场景加载好,速度根据当前电脑和网络的带宽有关。

  • 示例:
js
import KAPI from '@ibrucekong/kapi'
const kapi = await KAPI.build('Your Auth Token')
const scene = new kapi.Scene('kapi-container', { server: 'Your Service URL' })

// 设置10秒的超时等待时间
const readyState = await scene.ready(10)
console.log(readyState)

getResolution()

获取当前场景的分辨率。

  • 返回:

    • 当前场景的分辨率信息
  • 详情:

获取当前场景的分辨率信息,包括云流的原始分辨率、当前DOM的分辨率。

  • 示例:
js
import KAPI from '@ibrucekong/kapi'
const kapi = await KAPI.build('Your Auth Token')
const scene = new kapi.Scene('kapi-container', { server: 'Your Service URL' })
const readyState = await scene.ready()
if (readyState.code !== 200) return

const resolution = await scene.getResolution()
console.log(resolution)

setResolution()

设置当前场景的分辨率。

  • 参数:

    • {Number} width 云流的宽度
    • {Number} height 云流的高度
    • {Boolean} sync 是否要与其他客户端同步状态
  • 返回:

    • 设置当前场景分辨率是否成功的信息
  • 详情:

设置当前场景的分辨率,修改后需要重新连接云流服务,即刷新页面。

  • 示例:
js
import KAPI from '@ibrucekong/kapi'
const kapi = await KAPI.build('Your Auth Token')
const scene = new kapi.Scene('kapi-container', { server: 'Your Service URL' })
const readyState = await scene.ready()
if (readyState.code !== 200) return

const resolution = await scene.setResolution(1920, 1080)
console.log(resolution)

startEntrance()

开始入场动画。

  • 参数:

    • {Boolean} sync 是否要与其他客户端同步状态
  • 返回:

    • 开始入场动画是否成功的状态
  • 详情:

当前的入场动画是手动执行,如果想在场景初始化好就执行动画,有两种方案:
1、在初始化场景时,设置options.entrancetrue,系统在初始化好自动开启动画
2、在调用scene.ready()之后调用scene.startEntrance()也能实现开启动画的效果

  • 示例:
js
import KAPI from '@ibrucekong/kapi'
const kapi = await KAPI.build('Your Auth Token')
const scene = new kapi.Scene('kapi-container', { server: 'Your Service URL' })
const readyState = await scene.ready()
if (readyState.code !== 200) return

const entrance = await scene.startEntrance()
console.log(entrance)

pauseEntrance()

暂停入场动画。

  • 参数:

    • {Boolean} sync 是否要与其他客户端同步状态
  • 返回:

    • 暂停入场动画是否成功的状态
  • 详情:

暂停当前的入场动画特效

  • 示例:
js
import KAPI from '@ibrucekong/kapi'

const kapi = await KAPI.build('Your Auth Token')
const scene = new kapi.Scene('kapi-container', { server: 'Your Service URL' })
const readyState = await scene.ready()
if (readyState.code !== 200) return
// 开始
const entrance = await scene.startEntrance()
// 暂停 - 10秒后暂停动画
setTimeout(async e => {
  const pauseEntrance = await scene.pauseEntrance()
  console.log(pauseEntrance)
}, 10 * 1000)

stopEntrance()

停止入场动画。

  • 参数:

    • {Boolean} sync 是否要与其他客户端同步状态
  • 返回:

    • 停止入场动画是否成功的状态
  • 详情:

停止当前的入场动画特效

  • 示例:
js
import KAPI from '@ibrucekong/kapi'

const kapi = await KAPI.build('Your Auth Token')
const scene = new kapi.Scene('kapi-container', { server: 'Your Service URL' })
const readyState = await scene.ready()
if (readyState.code !== 200) return
// 开始
const entrance = await scene.startEntrance()
// 停止 - 10秒后停止动画
setTimeout(async e => {
  const stopEntrance = await scene.stopEntrance()
  console.log(stopEntrance)
}, 10 * 1000)

showGrid()

显示当前场景的网格数据。

因为每个工程、项目对网格的范围不一样,所以这块需要定制开发。

  • 参数:

    • {Boolean} sync 是否要与其他客户端同步状态
  • 返回:

    • 当前场景的网格数据是否显示成功
  • 详情:

显示当前场景的网格数据,以三维的形式显示出来,比常规二维的网格显示效果更佳。

  • 示例:
js
import KAPI from '@ibrucekong/kapi'

const kapi = await KAPI.build('Your Auth Token')
const scene = new kapi.Scene('kapi-container', { server: 'Your Service URL' })
const readyState = await scene.ready()
if (readyState.code !== 200) return
// 显示网格
const grid = await scene.showGrid()
console.log(grid)

hideGrid()

隐藏当前场景的网格数据。

  • 参数:

    • {Boolean} sync 是否要与其他客户端同步状态
  • 返回:

    • 当前场景的网格数据是否隐藏成功
  • 详情:

隐藏当前场景的网格数。

  • 示例:
js
import KAPI from '@ibrucekong/kapi'

const kapi = await KAPI.build('Your Auth Token')
const scene = new kapi.Scene('kapi-container', { server: 'Your Service URL' })
const readyState = await scene.ready()
if (readyState.code !== 200) return
// 显示网格
const grid = await scene.showGrid()
// 隐藏网格 - 10秒后隐藏网格
setTimeout(async e => {
  const hideGrid = await scene.hideGrid()
  console.log(hideGrid)
}, 10 * 1000)

mute()

设置当前场景为静音状态。

  • 参数:

    • {Boolean} sync 是否要与其他客户端同步状态
  • 返回:

    • 设置为静音是否成功
  • 详情:

设置当前场景为静音状态。

  • 示例:
js
import KAPI from '@ibrucekong/kapi'

const kapi = await KAPI.build('Your Auth Token')
const scene = new kapi.Scene('kapi-container', { server: 'Your Service URL' })
const readyState = await scene.ready()
if (readyState.code !== 200) return
// 显示网格
const mute = await scene.mute()
console.log(mute)

unmute()

解除当前场景的静音状态,即开启声音。

  • 参数:

    • {Boolean} sync 是否要与其他客户端同步状态
  • 返回:

    • 解除静音是否成功
  • 详情:

解除当前场景的静音状态,即开启声音。

  • 示例:
js
import KAPI from '@ibrucekong/kapi'

const kapi = await KAPI.build('Your Auth Token')
const scene = new kapi.Scene('kapi-container', { server: 'Your Service URL' })
const readyState = await scene.ready()
if (readyState.code !== 200) return
// 显示网格
const unmute = await scene.unmute()
console.log(unmute)

destroy()

销毁当前场景。

  • 返回:

    • 销毁场景是否成功
  • 详情:

销毁当前场景。

  • 示例:
js
import KAPI from '@ibrucekong/kapi'

const kapi = await KAPI.build('Your Auth Token')
const scene = new kapi.Scene('kapi-container', { server: 'Your Service URL' })
const readyState = await scene.ready()
if (readyState.code !== 200) return
// 显示网格
const destroy = await scene.destroy()
console.log(destroy)
场景 has loaded