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.
addEventListener("select", (event) => { })
onselect = (event) => { }
Loại sự kiện
Một XRInputSourceEvent. Kế thừa từ Event.
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.
frameRead only-
Một đối tượng
XRFramecung 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ọiXRFrame.getViewerPose()trên nó; thay vào đó, sử dụnggetPose(). inputSourceRead only-
Một đối tượng
XRInputSourcecho 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 selectstart và selectend 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 selectstart và selectend 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().
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:
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> |