XRSession: sự kiện squeeze
Khả dụng hạn chế
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 squeeze 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 bóp chính. Ví dụ về các loại hành động chính phổ biến là 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ế.
Để biết chi tiết về cách các sự kiện squeezestart, squeeze và squeezeend hoạt động và cách bạn nên phản ứng với chúng, xem Đầu vào và nguồn đầu vào.
Cú pháp
Sử dụng tên sự kiện trong các phương thức như addEventListener(), hoặc thiết lập một thuộc tính trình xử lý sự kiện.
addEventListener("squeeze", (event) => { })
onsqueeze = (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 bóp bộ điều khiển, thực hiện cử chỉ tay mô phỏng việc nắm bắt thứ gì đó hoặc sử dụng (bóp) cò.
Trường hợp sử dụng
Sự kiện squeezestart cho biết người dùng đã bắt đầu một hành động bóp.
Nếu hành động bóp chính kết thúc thành công, phiên được gửi một sự kiện squeeze.
Một sự kiện squeezeend được gửi để cho biết rằng hành động bóp không còn diễn ra. Điều này được gửi bất kể hành động bóp có thành công hay không.
Ví dụ
Ví dụ sau sử dụng addEventListener() để thiết lập một trình xử lý cho sự kiện squeeze. 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à myHandleSqueezeWithRay().
Mã này coi việc bóp như một hành động tức thời không liên quan đến việc theo dõi một hoạt động đang diễn ra. Nếu bạn cần theo dõi một hành động bóp không tức thời, hãy lắng nghe các sự kiện squeezestart và squeezeend để cảm nhận khi hành động bóp bắt đầu và kết thúc.
xrSession.addEventListener("squeeze", (event) => {
if (event.inputSource.targetRayMode === "tracked-pointer") {
let targetRayPose = event.frame.getPose(
event.inputSource.targetRaySpace,
myRefSpace,
);
if (targetRayPose) {
myHandleSqueezeWithRay(targetRayPose.transform);
}
}
});
Bạn cũng có thể thiết lập một trình xử lý cho các sự kiện squeeze bằng cách thiết lập thuộc tính trình xử lý sự kiện onsqueeze của đối tượng XRSession thành một hàm xử lý sự kiện:
xrSession.onsqueeze = (event) => {
if (event.inputSource.targetRayMode === "tracked-pointer") {
let targetRayPose = event.frame.getPose(
event.inputSource.targetRaySpace,
myRefSpace,
);
if (targetRayPose) {
myHandleSqueezeWithRay(targetRayPose.transform);
}
}
};
Thông số kỹ thuật
| Thông số kỹ thuật |
|---|
| WebXR Device API> # eventdef-xrsession-squeeze> |
| WebXR Device API> # dom-xrsession-onsqueeze> |
Tương thích trình duyệt
Xem thêm
- Sự kiện
squeezestartvàsqueezeend