XRSession: sự kiện select

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

Sự kiện select của WebXR được gửi đến một XRSession khi một trong các nguồn đầu vào của phiên đã hoàn thành một hành động chính.

addEventListener(), hoặc thiết lập một thuộc tính trình xử lý sự kiện.

js
addEventListener("select", (event) => { })

onselect = (event) => { }

Loại sự kiện

Một XRInputSourceEvent. Kế thừa từ Event.

Event XRInputSourceEvent

Thuộc tính sự kiện

Ngoài các thuộc tính được liệt kê bên dưới, các thuộc tính từ giao diện cha, Event, cũng có sẵn.

frame Read only

Một đối tượng XRFrame cung cấp thông tin cần thiết về khung hình sự kiện trong đó sự kiện xảy ra. Khung hình này có thể đã được kết xuất trong quá khứ thay vì là một khung hình hiện tại. Vì đây là khung hình sự kiện, không phải khung hình hoạt ảnh, bạn không thể gọi XRFrame.getViewerPose() trên nó; thay vào đó, sử dụng getPose().

inputSource Read only

Một đối tượng XRInputSource cho biết nguồn đầu vào nào đã tạo ra sự kiện đầu vào.

Mô tả

Kích hoạt

Được kích hoạt khi người dùng nhấn cò hoặc nút, chạm bàn di chuột, nói lệnh hoặc thực hiện một cử chỉ có thể nhận dạng khi sử dụng hệ thống theo dõi video hoặc bộ điều khiển cầm tay với gia tốc kế.

Trường hợp sử dụng

Các sự kiện selectstartselectend cho bạn biết khi nào bạn có thể muốn hiển thị điều gì đó cho người dùng cho biết hành động chính đang diễn ra. Điều này có thể là vẽ một bộ điều khiển với nút đã kích hoạt bằng màu mới, hoặc hiển thị đối tượng mục tiêu bị nắm và di chuyển xung quanh, bắt đầu khi selectstart đến và dừng khi nhận được selectend.

Sự kiện select cho mã của bạn biết rằng người dùng đã hoàn thành một hành động. Điều này có thể đơn giản như ném một đối tượng hoặc kéo cò súng trong trò chơi, hoặc phức tạp như đặt một đối tượng đã kéo tại vị trí mới.

Nếu hành động chính của bạn là một hành động kích hoạt đơn giản và bạn không cần hoạt họa bất cứ thứ gì trong khi cò được kích hoạt, bạn có thể bỏ qua các sự kiện selectstartselectend và hành động dựa trên sự kiện bắt đầu.

Ví dụ

Ví dụ sau sử dụng addEventListener() để thiết lập một trình xử lý cho sự kiện select. Trình xử lý lấy pose biểu diễn tia mục tiêu cho các đầu vào tracked-pointer và gửi biến đổi của pose đến một hàm gọi là myHandleSelectWithRay().

js
xrSession.addEventListener("select", (event) => {
  if (event.inputSource.targetRayMode === "tracked-pointer") {
    let targetRayPose = event.frame.getPose(
      event.inputSource.targetRaySpace,
      myRefSpace,
    );
    if (targetRayPose) {
      myHandleSelectWithRay(targetRayPose.transform);
    }
  }
});

Bạn cũng có thể thiết lập một trình xử lý cho các sự kiện select bằng cách thiết lập thuộc tính trình xử lý sự kiện onselect của đối tượng XRSession thành một hàm xử lý sự kiện:

js
xrSession.onselect = (event) => {
  if (event.inputSource.targetRayMode === "tracked-pointer") {
    let targetRayPose = event.frame.getPose(
      event.inputSource.targetRaySpace,
      myRefSpace,
    );
    if (targetRayPose) {
      myHandleSelectWithRay(targetRayPose.transform);
    }
  }
};

Thông số kỹ thuật

Specification
WebXR Device API
# eventdef-xrsession-select
WebXR Device API
# dom-xrsession-onselect

Tương thích trình duyệt

Xem thêm