XRSession: событие squeeze
Ограниченная доступность
Эта функция не относится к Baseline, так как она не работает во всех широко используемых браузерах.
Экспериментальная: Это экспериментальная технология
Перед использованием в продакшене внимательно проверьте таблицу совместимости с браузерами.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.
Событие WebXR squeeze отправляется объекту XRSession, когда один из источников ввода сессии выполнил основное действие squeeze. Примеры основных действий — нажатие триггеров или кнопок, тап по трекпаду, произнесение команды или выполнение распознаваемого жеста при использовании системы отслеживания видео или контроллера с акселерометром.
Подробную информацию о работе событий squeezestart, squeeze, и squeezeend и о том, как на них реагировать, см. в разделе Источники ввода и ввода.
Синтаксис
Используйте имя события в методах, таких как addEventListener(), или задайте свойство обработчика события.
addEventListener("squeeze", (event) => {});
onsqueeze = (event) => {};
Тип события
Объект XRInputSourceEvent. Наследует от Event.
Свойства события
Помимо перечисленных ниже свойств, доступны свойства из родительского интерфейса Event.
-
frameТолько для чтения -
Объект
XRFrame, предоставляющий необходимую информацию о кадре события во время его возникновения. Этот кадр может быть рендерен в прошлом, а не в текущем кадре. Поскольку это кадр события, а не кадр анимации, нельзя вызыватьXRFrame.getViewerPose()на нём; используйтеgetPose(). -
inputSourceТолько для чтения -
Объект
XRInputSource, указывающий, какой источник ввода сгенерировал событие ввода.
Описание
Триггер
Срабатывает при сжатии контроллера, выполнении жестом руки, имитирующим схватывание чего-либо, или использовании (сжатии) триггера.
Сценарии использования
Событие squeezestart указывает на то, что пользователь начал действие squeeze.
Если основное действие squeeze завершилось успешно, сессии отправляется событие squeeze.
Событие squeezeend отправляется, чтобы указать, что действие squeeze больше не выполняется. Оно отправляется независимо от того, удалось ли выполнить действие squeeze или нет.
Примеры
В следующем примере используется addEventListener() для настройки обработчика события squeeze. Обработчик извлекает позу, представляющую целевой луч для tracked-pointer ввода, и отправляет преобразование позы в функцию под названием myHandleSqueezeWithRay().
Этот код обрабатывает сжатие как мгновенное действие, которое не включает отслеживание текущей активности. Если вам нужно отслеживать действие squeeze, которое не является мгновенным, используйте события squeezestart и squeezeend для определения начала и окончания действия squeeze.
xrSession.addEventListener("squeeze", (event) => {
if (event.inputSource.targetRayMode === "tracked-pointer") {
let targetRayPose = event.frame.getPose(
event.inputSource.targetRaySpace,
myRefSpace,
);
if (targetRayPose) {
myHandleSqueezeWithRay(targetRayPose.transform);
}
}
});
Вы также можете настроить обработчик для событий squeeze, задав свойство обработчика события onsqueeze объекта XRSession в функцию, которая обрабатывает событие:
xrSession.onsqueeze = (event) => {
if (event.inputSource.targetRayMode === "tracked-pointer") {
let targetRayPose = event.frame.getPose(
event.inputSource.targetRaySpace,
myRefSpace,
);
if (targetRayPose) {
myHandleSqueezeWithRay(targetRayPose.transform);
}
}
};
Спецификации
| Спецификация |
|---|
| WebXR Device API # eventdef-xrsession-squeeze |
| WebXR Device API # dom-xrsession-onsqueeze |
Совместимость с браузерами
| Рабочий стол | Мобильный | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
squeeze_event |
83 | 83 | Нет | 69 | Нет | 83 | Нет | 59 | Нет | 13.0 | Нет |
См. также
-
squeezestartиsqueezeendсобытие
© 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/squeeze_event