Cihaz Yönü ve Hareket

Cihaz hareketi ve yön etkinlikleri, cihazın yerleşik özelliklerine erişmenizi sağlar ivme ölçer, jiroskop ve pusula gibi teknolojiler.

Bu etkinlikler birçok amaç için kullanılabilir: kontrol edebiliyorlar. bir karakterin yönlendirmesi veya hareketidir. Coğrafi konum ile birlikte kullanıldığında, daha doğru adım adım navigasyon oluşturmaya yardımcı olabilir veya belirli bir konum.

Özet

  • Cihazın hangi tarafının yukarıda olduğunu ve nasıl döndüğünü algılayın.
  • Hareket ve yön etkinliklerine ne zaman ve nasıl yanıt vereceğinizi öğrenin.

Hangi uçta?

Cihaz yönü ve hareket etkinliklerinin döndürdüğü verileri kullanmak için verilen değerleri anlamak önemlidir.

Earth koordinat çerçevesi

X, Y ve Z değerleriyle tanımlanan dünya koordinatı çerçevesi hizalandı ve standart manyetik yöne dayalı olarak çalışır.

Koordinat sistemi
X Doğu-batı yönünü gösterir (doğu pozitif olduğunda).
Y Kuzey-güney yönünü gösterir (kuzey pozitif olduğunda).
Z Zemine dik şekilde yukarı aşağı yönü gösterir (artış pozitif).

Cihaz koordinat çerçevesi

Cihaz koordinat çerçevesinin resmi
Cihaz koordinat çerçevesinin resmi

x, y ve z değerleriyle açıklanan cihaz koordinatı çerçevesi hizalandı ortada olacak şekilde düzenleyebilirsiniz.

Koordinat sistemi
X Ekran düzleminde, sağa doğru pozitif.
Y Ekran düzleminde, yukarıya doğru pozitif.
Z Ekrana veya klavyeye dik, pozitif yönde genişleme kaçırdınız.

Telefon veya tablette cihazın yönü, genel yönünü değiştirebilirsiniz. Telefon ve tabletlerde ise cihaza göre değişir. portre modunda olun. Masaüstü veya dizüstü bilgisayarlarda ise yön şu şekildedir: klavyeyle bağlantılı olarak düşünülür.

Rotasyon verileri

Döndürme verileri bir Euler açısı olarak döndürülür. cihaz koordinatı arasındaki farkın derece sayısını temsil eden çerçeve ve Dünya koordinat çerçevesidir.

Alfa

Cihaz koordinat çerçevesinde alfa resmi
Cihaz koordinat çerçevesinde alfa resmi

Z ekseni etrafındaki döndürme. Fotoğrafın en tepesi olduğunda alpha değeri 0° cihaz doğrudan kuzeye bakıyor. Cihaz saat yönünün tersine döndürüldüğünde alpha değeri artıyor.

Beta

cihaz koordinat çerçevesinin resmi
Cihaz koordinat çerçevesinde beta resmi

X ekseni etrafındaki dönme. beta değeri, üst ve dünya yüzeyinden eşit mesafede olduğunu unutmayın. Değer cihazın üst kısmı dünyanın yüzeyine doğru yükseldikçe artar.

Gama

cihaz koordinat çerçevesinin resmi
Cihaz koordinat çerçevesinde gama çizimi

Y ekseni etrafındaki dönme. gamma değeri sol ve sol taraftaken 0° cihazın sağ kenarları dünya yüzeyinden eşittir. Değer sağ taraf dünyanın yüzeyine doğru yükseldikçe artar.

Cihazın yönü

Cihaz yönü etkinliği, döndürme verisini döndürerek öne eğiliyor olabilir ve eğer telefon veya dizüstü bilgisayar cihazın baktığı yöne ait bir pusulaya sahip olduğundan emin olun.

Az kullanın. Destek için test edin. Her yönlendirme etkinliğinde kullanıcı arayüzünü güncellemeyin; bunun yerine requestAnimationFrame ile senkronize edin.

Cihaz yönü etkinlikleri ne zaman kullanılır?

Cihaz yönü etkinliklerinin çeşitli kullanım alanları vardır. Örnekler arasında şunlar yer alır:

  • Kullanıcı hareket ettikçe haritayı güncelleyin.
  • Kullanıcı arayüzünde ufak değişiklikler (ör. paralaks efektleri eklemek)
  • Coğrafi konumla birleştirildiğinde, adım adım navigasyon için kullanılabilir.

Desteği kontrol etme ve etkinlikleri dinleme

DeviceOrientationEvent dosyasını dinlemek için önce tarayıcının etkinlikleri destekleyip desteklemediğini kontrol edin. Ardından, deviceorientation etkinliklerini dinleyen window nesnesine bir etkinlik işleyici ekleyin.

if (window.DeviceOrientationEvent) {
  window.addEventListener('deviceorientation', deviceOrientationHandler, false);
  document.getElementById('doeSupported').innerText = 'Supported!';
}

Cihaz yönü etkinliklerini işleme

Cihaz hareket ettiğinde veya değiştiğinde cihaz yön etkinliği tetiklenir Yönü. Şu cihazdaki cihaz arasındaki farkla ilgili verileri döndürür: konuma göre mevcut konumunu Dünya koordinat çerçevesi.

Etkinlik genellikle üç özellik döndürür: alpha, beta ve gamma. Mobile Safari'de ek parametre webkitCompassHeading işlevi pusula başlığıyla döndürülür.

Cihaz hareketi

Cihaz yönü etkinliği, döndürme verisini döndürerek öne eğiliyor olabilir ve eğer telefon veya dizüstü bilgisayar cihazın baktığı yöne ait bir pusulaya sahip olduğundan emin olun.

Cihazın o anda hareket etmesi gerektiğinde cihaz hareketini kullanın. rotationRate, °/sn cinsinden sağlanır. acceleration ve accelerationWithGravity, m/sn2 hızında sağlanır. Tarayıcı uygulamaları arasındaki farklılıklara dikkat edin.

Cihaz hareketi etkinlikleri ne zaman kullanılır?

Cihaz hareketi etkinliklerinin çeşitli kullanım biçimleri vardır. Örnekler arasında şunlar yer alır:

  • Verileri yenilemek için sallama hareketi.
  • Oyunlarda, karakterlerin zıplamasına veya hareket etmesine neden olmak için.
  • Sağlık ve fitness uygulamaları için.

Desteği kontrol etme ve etkinlikleri dinleme

DeviceMotionEvent dinlemek için önce etkinliklerin gerçekleşip gerçekleşmediğini kontrol edin emin olmanız gerekir. Ardından, window öğesine bir etkinlik işleyici ekleyin devicemotion etkinlik için nesne dinliyor.

if (window.DeviceMotionEvent) {
  window.addEventListener('devicemotion', deviceMotionHandler);
  setTimeout(stopJump, 3 * 1000);
}

Cihaz hareketi etkinliklerini işleme

Cihaz hareketi etkinliği düzenli aralıklarla tetiklenir ve dönüş (°/saniye) ve ivme (m/saniye2 cinsinden) veriler ve e-postalar. Bazı cihazlarda donanım yoktur yer çekiminin etkisini ortadan kaldırmaktır.

Etkinlik dört özellik döndürür. accelerationIncludingGravity acceleration, şunlar hariç tutulur: yer çekimi, rotationRate ve interval.

Örneğin, düz bir masanın üzerinde durmuş, arkası açık yukarı bakacak şekilde.

Eyalet Döndürme İvme (m/sn2) Yer çekimi ile ivme (m/sn2)
Hareket etmiyor [0, 0, 0] [0, 0, 0] [0, 0, 9,8]
Gökyüzüne doğru hareket etme [0, 0, 0] [0, 0, 5] [0, 0, 14,81]
Yalnızca sağa taşınıyor [0, 0, 0] [3, 0, 0] [3, 0, 9,81]
Yukarı ve sağa hareket ediyor [0, 0, 0] [5, 0, 5] [5, 0, 14,81]

Diğer taraftan, telefon, ekran ekrana dik olacak şekilde tutulduğunda. ve izleyici tarafından doğrudan görülebiliyor:

Eyalet Döndürme İvme (m/sn2) Yer çekimi ile ivme (m/sn2)
Hareket etmiyor [0, 0, 0] [0, 0, 0] [0, 9,81, 0]
Gökyüzüne doğru hareket etme [0, 0, 0] [0, 5, 0] [0, 14,81, 0]
Yalnızca sağa taşınıyor [0, 0, 0] [3, 0, 0] [3, 9,81, 0]
Yukarı ve sağa hareket ediyor [0, 0, 0] [5, 5, 0] [5, 14,81, 0]

Örnek: Bir nesnenin maksimum ivmesini hesaplama

Cihaz hareket etkinliklerini kullanmanın bir yolu, maksimum hızlanmayı hesaplamaktır. olduğunu görebilirsiniz. Örneğin, bir insanın maksimum ivmesi nedir? zıplıyor musunuz?

if (evt.acceleration.x > jumpMax.x) {
  jumpMax.x = evt.acceleration.x;
}
if (evt.acceleration.y > jumpMax.y) {
  jumpMax.y = evt.acceleration.y;
}
if (evt.acceleration.z > jumpMax.z) {
  jumpMax.z = evt.acceleration.z;
}

Git! bu düğmeyi tıklamak, kullanıcının atlaması istenir. Bu süre içinde sayfa maksimum (ve minimum) hızlanma değerlerini depolar ve kullanıcının maksimum ivmesini belirtir.

Geri bildirim