Skip to content

控制

new Controller()

实例化控制模块

  • 返回:

    • 实例化Controller对象
  • 详情:

    实例化Controller组件不需要传参,实例化后可以提供很多控制类的方法,比如显示帧数、隐藏帧数、显示指南针、隐藏指南针等。

  • 示例:

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 controller = new kapi.Controller()
console.log(controller)

enableLightShow()

启用灯光效果。

  • 参数:

    • {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 lightShow = await controller.enableLightShow()
console.log(lightShow)

disableLightShow()

禁用灯光效果。

  • 参数:

    • {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 lightShow = await controller.enableLightShow()
console.log(lightShow)

// 10秒后关闭灯光效果
setTimeout(async e => {
  const disableLightShow = await controller.disableLightShow()
  console.log(disableLightShow)
}, 10 * 1000)

enableBoxSide()

开启操作边界限制。

  • 参数:

    • {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 boxSide = await controller.enableBoxSide()
console.log(boxSide)

disableBoxSide()

关闭操作边界限制。

  • 参数:

    • {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 boxSide = await controller.enableBoxSide()
console.log(boxSide)

// 10秒后禁用边界限制效果
setTimeout(async e => {
  const disableBoxSide = await controller.disableBoxSide()
  console.log(disableBoxSide)
}, 10 * 1000)

enableMouseInput()

启用鼠标输入操作。

  • 参数:

    • {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 mouseInput = await controller.enableMouseInput()
console.log(mouseInput)

disableMouseInput()

禁用鼠标输入操作。

  • 参数:

    • {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 mouseInput = await controller.enableMouseInput()
console.log(mouseInput)

// 10秒后禁用鼠标操作
setTimeout(async e => {
  const disableMouseInput = await controller.disableMouseInput()
  console.log(disableMouseInput)
}, 10 * 1000)

showCompass()

显示指南针。

  • 参数:

    • {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 compass = await controller.showCompass()
console.log(compass)

hideCompass()

显示指南针。

  • 参数:

    • {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 compass = await controller.showCompass()
console.log(compass)

// 10秒后隐藏指南针
setTimeout(async e => {
  const disableCompass = await controller.hideCompass()
  console.log(disableCompass)
}, 10 * 1000)

setSkyColorParam()

设置天空球颜色。

  • 参数:

    • {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 compass = await controller.showCompass()
console.log(compass)

setWeatherType()

设置天气。

  • 参数:

    • {String} type 天气的标识码
    • {Boolean} sync 是否要与其他客户端同步状态

type参数如下表

枚举参数使用天气描述
CLEAR_SKIESKAPI_CONST.WEATHER.CLEAR_SKIES晴天
PARTLY_CLOUDYKAPI_CONST.WEATHER.PARTLY_CLOUDY少云
CLOUDYKAPI_CONST.WEATHER.CLOUDY多云
OVERCASTKAPI_CONST.WEATHER.OVERCAST阴天
FOGGYKAPI_CONST.WEATHER.FOGGY雾天
LIGHT_RAINKAPI_CONST.WEATHER.LIGHT_RAIN小雨
RAINKAPI_CONST.WEATHER.RAIN中雨
THUNDERSTORMKAPI_CONST.WEATHER.THUNDERSTORM暴风雨
SAND_DUSTKAPI_CONST.WEATHER.SAND_DUST沙尘
SANDSTORMKAPI_CONST.WEATHER.SANDSTORM沙尘暴
LIGHT_SNOWKAPI_CONST.WEATHER.LIGHT_SNOW小雪
SNOWKAPI_CONST.WEATHER.SNOW中雪
BLIZZARDKAPI_CONST.WEATHER.BLIZZARD暴风雪
  • 返回:

    • 设置天气后的反馈信息
  • 详情:

在场景中模拟天气效果。

  • 示例:
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 ts = await controller.setWeatherType(KAPI_CONST.WEATHER.THUNDERSTORM)
console.log(ts)

setRealWorldTime()

设置真实世界时间。

  • 参数:

    • {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 realWorldTime = await controller.setRealWorldTime()
console.log(realWorldTime)

setDateTime()

设置时间。

  • 参数:

    • {string | Date | DateTime} dateTime 时间字符串、时间对象或时间戳
    • {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 dateTime = new Date()
const time = await controller.setDateTime(dateTime)
console.log(time)

setTimeSimulate()

时间动态模拟。

  • 参数:

    • {Object} option 是否要与其他客户端同步状态
    • {Boolean} sync 是否要与其他客户端同步状态

option参数如下表

参数类型是否必选说明
statusnumber必选设置时间循环状态(0-开始、1-停止、2-结束)
startTimeint必选设置开始时间,整数,单位小时
periodint必选周期,单位秒,默认86400(循环时间为24小时)
loopboolean必选是否循环播放
  • 返回:

    • 时间动态模拟后的反馈信息
  • 详情:

场景中需要以时间流动的形式动态模拟世界样子,可以调用该方法。

  • 示例:
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 dateTime = new Date()
const time = await controller.setTimeSimulate(dateTime)
console.log(time)

enableFPS()

启用FPS。

  • 参数:

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

    • 启用FPS后的返回信息
  • 详情:

启用显示帧数,配合 addFPSEventListener 事件监听,当启用时,该监听可以返回值,当禁用时,该监听不再返回值。

  • 示例:
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 fps = await controller.enableFPS(2)
console.log(fps)

disableFPS()

禁用FPS。

  • 参数:

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

    • 禁用FPS后的返回信息
  • 详情:

禁用显示帧数,配合 addFPSEventListener 事件监听,当启用时,该监听可以返回值,当禁用时,该监听不再返回值。

  • 示例:
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 fps = await controller.disableFPS()
console.log(fps)

FPSEventListener

添加FPS事件监听

  • 返回:

    • 监听FPS后的帧数值,只要启用就一直返回,禁用后停止
  • 详情:

添加 FPSEventListener 事件监听,使用enableFPS时,该监听可以返回值,当使用disableFPS时,该监听不再返回值。

  • 示例:
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 event = new kapi.Event()
event.addEventListener(KAPI_CONST.EVENT.FPS, fps => {
  console.log(fps)
})

// 1.启用
const fps = await controller.enableFPS()
console.log(fps)

// 10秒后,禁用FPS
setTimeout(async e => {
  const fps = await controller.disableFPS()
  console.log(fps)
}, 10 * 1000)

移除FPS事件监听

  • 返回:

    • 移除监听FPS后的帧数值设置
  • 详情:

移除 FPSEventListener 事件监听,使用enableFPS时,该监听可以返回值,当使用disableFPS时,该监听不再返回值。

  • 示例:
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 event = new kapi.Event()
addEventListener(KAPI_CONST.EVENT.FPS, fps => {
  console.log(fps)
})

// 1.启用
const fps = await controller.enableFPS()
console.log(fps)

// 10秒后,移除FPS监听
setTimeout(async e => {
  event.removeEventListener(KAPI_CONST.EVENT.FPS)
}, 10 * 1000)
控制 has loaded