VRButton 是 CesiumJS 中的一个组件,用于开启或关闭虚拟现实功能。此功能允许用户通过虚拟现实设备来探索场景。
这里是 VRButton 的基本用法:
const viewer = new Cesium.Viewer('cesiumContainer');
const vrButton = new Cesium.VRButton(viewer.cesiumWidget.container);
这将创建一个 VRButton 并将其添加到 viewer 实例的容器中。
默认情况下, VRButton 只会在支持虚拟现实的设备上显示。如果你想在所有设备上始终显示按钮,则可以将 VRButton 的第二个参数设置为 true:
const vrButton = new Cesium.VRButton(viewer.cesiumWidget.container, true);
VRButton 的外观可以通过 CSS 进行调整。以下是默认样式:
.cesium-vrButton-wrapper {
    position: absolute;
    top: 6px;
    right: 6px;
    z-index: 1;
}
.cesium-vrButton-button {
    display: inline-block;
    vertical-align: middle;
    width: 44px;
    height: 44px;
    background-color: #fff;
    color: #000;
    cursor: pointer;
    border: none;
    outline: none;
    border-radius: 50%;
    background-image: url(data:image/png;base64,iVBORw...);
    background-repeat: no-repeat;
    background-position: center;
}
.cesium-vrButton-button:hover {
    background-color: #eee;
    color: #000;
}
要自定义样式,只需在 CSS 文件中添加自己的样式。例如,如果您想更改按钮的背景颜色:
.cesium-vrButton-button {
    background-color: red;
}
请注意,这将更改所有 VRButton 的背景颜色。
VRButton 发出以下事件:
vrButtonStateChanged: 当用户单击按钮以启用或禁用 VR 时发生。事件有效负载包括 vrButtonEnabled (bool),指示 VR 是否已启用。vrDisplayPresentChange: 当用户从 VR 模式切换回普通模式或反之时发生。事件有效负载包括 vrButtonEnabled (bool),指示 VR 是否已启用。以下是如何侦听这些事件的示例:
vrButton.viewModel.vrButtonStateChanged.addEventListener((enabled) => {
    console.log('VR state changed:', enabled);
});
vrButton.viewModel.vrDisplayPresentChange.addEventListener((enabled) => {
    console.log('VR display present changed:', enabled);
});
以下是 VRButton 上可用的属性:
svgOn: String,指定在 VR 模式下显示的 SVG 图标的 URL。默认为 CesiumJS 自带的默认图标。svgOff: String,指定在非 VR 模式下显示的 SVG 图标的 URL。默认为 CesiumJS 自带的默认图标。tooltipText: String,指定当用户将鼠标悬停在 VRButton 上时显示的工具提示文本。默认为 "Enable VR mode"。tooltipTextEnabled: String,指定当 VR 模式激活时 VRButton 上显示的文本。默认为 "VR mode enabled."。tooltipTextDisabled: String,指定当 VR 模式禁用时 VRButton 上显示的文本。默认为 "VR mode disabled."。这些属性可以通过 viewModel 对象进行访问和更改。例如,要更改图标:
vrButton.viewModel.svgOn = 'myOnIcon.svg';
vrButton.viewModel.svgOff = 'myOffIcon.svg';
请注意,更改这些属性将更改所有 VRButton 实例的行为。