Spec-Zone.ru › Web APIs

XRSession: событие squeeze

Ограниченная доступность

Эта функция не относится к Baseline, так как она не работает во всех широко используемых браузерах.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Экспериментальная: Это экспериментальная технология
Перед использованием в продакшене внимательно проверьте таблицу совместимости с браузерами.

Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.

Событие WebXR squeeze отправляется объекту XRSession, когда один из источников ввода сессии выполнил основное действие squeeze. Примеры основных действий — нажатие триггеров или кнопок, тап по трекпаду, произнесение команды или выполнение распознаваемого жеста при использовании системы отслеживания видео или контроллера с акселерометром.

Подробную информацию о работе событий squeezestart, squeeze, и squeezeend и о том, как на них реагировать, см. в разделе Источники ввода и ввода.

Синтаксис

Используйте имя события в методах, таких как addEventListener(), или задайте свойство обработчика события.

addEventListener("squeeze", (event) => {});

onsqueeze = (event) => {};

Тип события

Объект XRInputSourceEvent. Наследует от Event.

Событие XRInputSourceEvent

Свойства события

Помимо перечисленных ниже свойств, доступны свойства из родительского интерфейса 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API