XRSession: событие select
Ограниченная доступность
Эта функция не относится к Baseline, так как она не работает во всех широко используемых браузерах.
Экспериментальная: Это экспериментальная технология.
Перед использованием в рабочей среде внимательно изучите таблицу совместимости браузеров.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.
Событие WebXR select отправляется в XRSession, когда один из источников ввода сессии завершил основное действие.
Событие beforexrselect срабатывает до этого события и может предотвратить его возникновение.
Синтаксис
Используйте имя события в методах, таких как addEventListener(), или задайте обработчик события.
addEventListener("select", (event) => {});
onselect = (event) => {};
Тип события
Объект XRInputSourceEvent. Наследуется от Event.
Свойства события
Помимо перечисленных ниже свойств, доступны свойства родительского интерфейса Event.
-
frameТолько для чтения -
Объект
XRFrame, предоставляющий необходимую информацию о кадре события, в котором произошло событие. Этот кадр может быть рендерен в прошлом, а не текущим. Поскольку это кадр события, а не кадр анимации, вы не можете вызватьXRFrame.getViewerPose()на нём; вместо этого используйтеgetPose(). -
inputSourceТолько для чтения -
Объект
XRInputSource, указывающий, какой источник ввода сгенерировал событие ввода.
Описание
Триггер
Срабатывает при нажатии пользователем триггеров или кнопок, нажатии сенсорной панели, произнесении команды или выполнении распознаваемого жеста при использовании системы отслеживания видео или контроллера с акселерометром.
Сценарии использования
События selectstart и selectend сообщают вам, когда необходимо отобразить пользователю информацию о текущем основному действию. Это может быть наложение контроллера с нажатой кнопкой в новом цвете или показ объекта, который захватывается и перемещается, начиная с появления selectstart и заканчивая получением selectend.
Событие select сообщает вашему коду о завершении пользователем действия. Это может быть простым броском объекта или нажатием спускового крючка в игре, или более сложным размещением перетащенного объекта в новом месте.
Если ваше основное действие — простое действие нажатия триггера, и вам не нужно ничего анимировать, пока триггер нажат, вы можете пропустить события selectstart и selectend и действовать только на событии начала.
Примеры
Следующий пример использует addEventListener(), чтобы установить обработчик для события select. Обработчик получает позу, представляющую целевой луч для ввода tracked-pointer и отправляет преобразование позы в функцию, названную myHandleSelectWithRay().
xrSession.addEventListener("select", (event) => {
if (event.inputSource.targetRayMode === "tracked-pointer") {
let targetRayPose = event.frame.getPose(
event.inputSource.targetRaySpace,
myRefSpace,
);
if (targetRayPose) {
myHandleSelectWithRay(targetRayPose.transform);
}
}
});
Вы также можете настроить обработчик для событий select, установив свойство обработчика события onselect объекта XRSession на функцию, которая обрабатывает событие:
xrSession.onselect = (event) => {
if (event.inputSource.targetRayMode === "tracked-pointer") {
let targetRayPose = event.frame.getPose(
event.inputSource.targetRaySpace,
myRefSpace,
);
if (targetRayPose) {
myHandleSelectWithRay(targetRayPose.transform);
}
}
};
Спецификации
| Спецификация |
|---|
| API устройства WebXR # eventdef-xrsession-select |
| API устройства WebXR # dom-xrsession-onselect |
Совместимость браузеров
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
select_event |
79 | 79 | Нет | 66 | Нет | 79 | Нет | 57 | Нет | 11.2 | Нет |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/XRSession/select_event