Hızlandırılmış hareket, imleci ekranda hareket ettirmek için fare veya izleme dörtgeni kullanıldığında ergonomik bir özelliktir. Yavaş hareket ederek hassas hareket sağlarken aynı zamanda işaretçinin hızlı bir kısa hareketle tüm ekranı geçmesine izin verir. Spesifik olarak, fareyi hareket ettirdiğiniz aynı fiziksel mesafe için, mesafe daha hızlı katedildiyse ekrandaki işaretçi daha fazla hareket eder.
İşletim sistemleri varsayılan olarak fare hızlandırmayı etkinleştirir. Bazı birinci taraf perspektifi oyunlar, genellikle birinci şahıs nişancı (FPS), ham fare girdi verileri, hızlanma ayarı olmadan kamera dönüşünü kontrol etmek için kullanılır. Aynı fiziksel hareket, yavaş veya hızlı, aynı dönüşle sonuçlanır. Bu, profesyonel oyunculara göre daha iyi bir oyun deneyimi ve daha yüksek doğruluk sağlar.
Chrome 88’den başlayarak, web uygulamaları, hızlandırılmış ve hızlandırılmamış fare hareketi verileri arasında geçiş yapabilir. Pointer Lock API güncellendi.
gibi web tabanlı oyun platformları Google Stadia Ve Nvidia GeForce Şimdi FPS oyuncularını memnun etmek için bu yeni yetenekleri şimdiden kullanın.
- Chrome 37, Desteklenir 37
- Firefox 50, Desteklenir 50
- Kenar 13, Desteklenen 13
- Safari 10.1, Desteklenir 10.1
API’yi kullanma #
İşaretçi kilidi iste #
İşaretçi kilidi, bir masaüstü uygulamasının işaretçi simgesini gizlediği ve fare hareketini başka bir şey için, örneğin 3B bir dünyada etrafa bakmak için yorumladığı zamanki standart terimdir.
bu movementX
Ve movementY
öznitelikler mousemove
belge olayları, fare işaretçisinin son taşıma olayından bu yana ne kadar hareket ettiğini size söyler. Ancak, işaretçi web sayfasının dışına çıktığında bunlar güncellenmez.
document.addEventListener("mousemove", (event) => {
console.log(`movementX: ${event.movementX} movementY: ${event.movementY}`);
});
Fare işaretçisini yakalamak (veya bir işaretçi kilidi talep etmek), artık işaretçinin dışarı çıkması konusunda endişelenmemenizi sağlar. Bu, özellikle sürükleyici web oyunları için kullanışlıdır. İşaretçi kilitlendiğinde, tüm fare olayları işaretçi kilidinin hedef öğesine gider.
Arama requestPointerLock()
bir işaretçi kilidi istemek için hedef öğede ve dinle pointerlockchange
Ve pointerlockerror
işaretçi kilidi değişikliklerini izlemek için olaylar.
const myTargetElement = document.body;// Call this function to request a pointer lock.
function requestPointerLock() {
myTargetElement.requestPointerLock();
}
document.addEventListener("pointerlockchange", () => {
if (document.pointerLockElement) {
console.log(`pointer is locked on ${document.pointerLockElement}`);
} else {
console.log("pointer is unlocked");
}
});
document.addEventListener("pointerlockerror", () => {
console.log("pointer lock error");
});
Fare hızlandırmayı devre dışı bırak #
Arama requestPointerLock()
ile { unadjustedMovement: true }
fare hızlandırması için işletim sistemi düzeyinde ayarı devre dışı bırakmak ve ham fare girişine erişmek için. Bu şekilde, fare hareketi verileri mousemove
olaylar, işaretçi kilitliyken fare hızlandırmayı içermez.
Yeni döndürülen taahhüdü kullanın requestPointerLock()
isteğin başarılı olup olmadığını öğrenmek için.
function requestPointerLockWithUnadjustedMovement() {
const promise = myTargetElement.requestPointerLock({
unadjustedMovement: true,
});if (!promise) {
console.log("disabling mouse acceleration is not supported");
return;
}
return promise
.then(() => console.log("pointer is locked"))
.catch((error) => {
if (error.name === "NotSupportedError") {
// Some platforms may not support unadjusted movement.
// You can request again a regular pointer lock.
return myTargetElement.requestPointerLock();
}
});
}
İmleç kilidini serbest bırakmadan hızlandırılmış ve hızlandırılmamış fare hareketi verileri arasında geçiş yapmak mümkündür. İstediğiniz seçenekle işaretçi kilidini tekrar talep etmeniz yeterlidir. Bu istek başarısız olursa, orijinal kilit bozulmadan kalır ve iade edilen söz reddedilir. Başarısız bir değişiklik isteği için hiçbir işaretçi kilitleme olayı tetiklenmez.
tarayıcı desteği #
İşaretçi Kilidi API’si tarayıcılarda iyi desteklenir. Ancak Chromium tabanlı tarayıcılar (ör. Chrome, Edge vb.), Ekim 2020 itibarıyla fare hızlandırma için işletim sistemi düzeyinde ayarın devre dışı bırakılmasını destekleyen tek tarayıcılardır. MDN’lere bakın Tarayıcı Uyumluluğu güncellemeler için tablo.
İşletim sistemi desteği #
Fare hızlandırma için işletim sistemi düzeyinde ayarlamanın devre dışı bırakılması ChromeOS, macOS Catalina 10.15.1 ve Windows’ta desteklenir. Linux takip edecek.
Örnek #
Çalıştırarak Pointer Lock API ile oynayabilirsiniz. örnek Glitch’te. Emin olun kaynak kodunu kontrol edin.
Faydalı Bağlantılar #
teşekkürler #
Sayesinde James Hollyer, Thomas Steiner, Joe Karışık, Kayce BasklarıVe Vincent Scheib Bu makale hakkındaki yorumları için.