Skip to content

KeyInputControl

NIVIOBIM键盘输入控制功能模块,提供3D场景的键盘漫游控制。继承自Plugin,支持WASD键位和方向键控制相机移动,实现第一人称视角的漫游体验。

类定义

javascript
class KeyInputControl extends Plugin

构造函数

constructor(viewer3D, options)

创建键盘输入控制插件实例,初始化键盘输入控制,设置轨道控制器、键位映射、移动速度等。自动绑定键盘事件处理函数,准备接收键盘输入。

参数:

  • viewer3D {Viewer3D} - Viewer3D实例,提供场景和相机管理器访问。详见 Viewer3D
  • options {Object} - 插件配置选项

示例:

javascript
// 创建键盘输入控制插件
const keyInputControl = new KeyInputControl(viewer3D, {
    name: 'KeyInputControl'
});

// 设置移动速度
keyInputControl.moveSpeed = 10;

// 启用键盘控制
keyInputControl.enabled = true;

属性

orbitControl

轨道控制器实例,用于控制相机的移动和旋转。

类型: {OrbitControls}
只读: true

示例:

javascript
// 获取轨道控制器
const orbitControl = keyInputControl.orbitControl;

keyCode

键位映射对象,包含所有支持的键盘键位映射。

类型: {Object}
只读: true

示例:

javascript
// 获取键位映射
const keyCode = keyInputControl.keyCode;
console.log('W键码:', keyCode.KEY_W);

moveSpeed

移动速度,控制相机移动的速度,单位为单位/秒。

类型: {number}
默认值: 6

示例:

javascript
// 设置移动速度
keyInputControl.moveSpeed = 10;

// 获取移动速度
console.log('移动速度:', keyInputControl.moveSpeed);

方法

moveFront()

向前移动,设置相机向前移动的执行函数,对应W键。

示例:

javascript
// 开始向前移动
keyInputControl.moveFront();

moveBack()

向后移动,设置相机向后移动的执行函数,对应S键。

示例:

javascript
// 开始向后移动
keyInputControl.moveBack();

moveLeft()

向左移动,设置相机向左移动的执行函数,对应A键。

示例:

javascript
// 开始向左移动
keyInputControl.moveLeft();

moveRight()

向右移动,设置相机向右移动的执行函数,对应D键。

示例:

javascript
// 开始向右移动
keyInputControl.moveRight();

moveUp()

向上移动,设置相机向上移动的执行函数,对应Q键。

示例:

javascript
// 开始向上移动
keyInputControl.moveUp();

moveDown()

向下移动,设置相机向下移动的执行函数,对应E键。

示例:

javascript
// 开始向下移动
keyInputControl.moveDown();

stopFront()

停止向前移动,停止相机向前移动,对应W键释放。

示例:

javascript
// 停止向前移动
keyInputControl.stopFront();

stopBack()

停止向后移动,停止相机向后移动,对应S键释放。

示例:

javascript
// 停止向后移动
keyInputControl.stopBack();

stopLeft()

停止向左移动,停止相机向左移动,对应A键释放。

示例:

javascript
// 停止向左移动
keyInputControl.stopLeft();

stopRight()

停止向右移动,停止相机向右移动,对应D键释放。

示例:

javascript
// 停止向右移动
keyInputControl.stopRight();

stopUp()

停止向上移动,停止相机向上移动,对应Q键释放。

示例:

javascript
// 停止向上移动
keyInputControl.stopUp();

stopDown()

停止向下移动,停止相机向下移动,对应E键释放。

示例:

javascript
// 停止向下移动
keyInputControl.stopDown();

moveStop()

停止所有移动,停止所有方向的移动,清除所有移动执行函数。

示例:

javascript
// 停止所有移动
keyInputControl.moveStop();

setAddEvent()

添加键盘事件监听器,为document.body添加键盘按下和释放事件监听器。

示例:

javascript
// 添加键盘事件监听器
keyInputControl.setAddEvent();

removeEvent()

移除键盘事件监听器,从document.body移除键盘按下和释放事件监听器。

示例:

javascript
// 移除键盘事件监听器
keyInputControl.removeEvent();

onKeyDown(event)

键盘按下事件处理,处理键盘按下事件,根据按下的键位执行相应的移动操作。

参数:

  • event {KeyboardEvent} - 键盘事件对象

示例:

javascript
// 此方法由键盘事件自动调用
// 当按下W键时,会调用moveFront()方法

onKeyUp(event)

键盘释放事件处理,处理键盘释放事件,根据释放的键位停止相应的移动操作。

参数:

  • event {KeyboardEvent} - 键盘事件对象

示例:

javascript
// 此方法由键盘事件自动调用
// 当释放W键时,会调用stopFront()方法

update(param)

更新键盘输入控制,在渲染循环中更新键盘输入控制,执行所有激活的移动操作。

参数:

  • param {number} - 时间参数,用于动画更新

示例:

javascript
// 在渲染循环中更新键盘输入控制
keyInputControl.update(deltaTime);

dispose()

销毁键盘输入控制插件,清理插件资源,移除键盘事件监听器,调用父类的销毁方法。

示例:

javascript
// 销毁键盘输入控制插件
keyInputControl.dispose();

使用场景

第一人称漫游

  • 使用WASD键控制前后左右移动
  • 使用QE键控制上下移动
  • 实现第一人称视角的场景漫游

场景导航

  • 快速浏览大型场景
  • 精确定位到指定位置
  • 配合鼠标控制实现全方位导航

游戏式交互

  • 提供类似游戏的控制体验
  • 适合需要频繁移动的应用场景
  • 支持自定义键位映射

演示和展示

  • 在演示中快速切换视角
  • 配合其他控制方式使用
  • 提供流畅的导航体验

键位说明

键位功能说明
W / ↑前进沿相机前方向移动
S / ↓后退沿相机后方向移动
A / ←左移沿相机左方向移动
D / →右移沿相机右方向移动
Q上升沿世界Y轴正方向移动
E下降沿世界Y轴负方向移动

相关链接

文档内容为北京逆维悦动科技有限公司版权所有,禁止未授权转载