2014-09-01 34 views
1

對於時deviceOrientation事件的W3C標準:誰瞭解Windows Phone上的設備方向?

http://w3c.github.io/deviceorientation/spec-source-orientation.html#deviceorientation

的W3C標準描述了該事件的α屬性應該如何改變時,該設備繞其z軸旋轉。

在您直視屏幕時將手機放在您面前時,z軸指向您。它是與屏幕重合的平面的法線矢量。

在我看來,事情在我的Windows手機上略有不同(=惱人地)不同。 alpha屬性隨着圍繞x軸的旋轉而改變(即在portait模式下)。

如何重複:

  1. 舉起在你面前的電話(在波泰特模式)。
  2. 確保gamma值爲負數,表示手機稍向後傾斜。
  3. 現在確保alpha是大約。零度,這意味着手機以其y軸爲中心。
  4. 將手機稍微傾斜到左側,使alpha大約爲30度,同時確保gamma保持負值。
  5. 現在打開手機略微向一刻伽馬如何,成爲積極向上的你做伽馬積極

注意,Alpha值跳轉180度。這在W3C標準中沒有描述,或者我錯過了什麼?

-

另一個奇怪的事情,當你去到風景模式發生。在橫向模式下圍繞z軸傾斜手機時,不是alpha屬性,但beta屬性似乎會改變?!要使橫向模式下的alpha屬性發生變化,您必須圍繞它的(原始)x軸轉動手機,例如,這意味着將手機的頂部(現在位於左側,就像您在風景模式)遠離你。

-

我沒有在我手上,此時的Android或iOS設備,但至少在Chrome桌面瀏覽器模擬器的行爲完全不同(與W3C標準協議,它似乎)。

-

我把一個簡單的測試腳本,在這裏:

http://locaboa.com/wpdotest.html

(打開智能手機上的)

-

我是不是做錯了什麼/缺少的東西?

任何想法如何糾正?

=======================

編輯:只是測試它在iPhone上,似乎行爲方式與Windows手機相同...

+0

可能的重複[檢測視圖方向,如果方向是肖像顯示警告消息,建議用戶的指示](http://stackoverflow.com/questions/4917664/detect-viewport-orientation-if-orientation-is-portrai t顯示警報消息廣告) – 2014-09-01 19:38:41

+0

嗨Joffrey,不幸的是,沒有回答這個問題。我瞭解風景和肖像模式之間的差異,我知道如何檢測它們之間的差異。我對設備報告的與3D空間中的方向有關的實際ANGLES有所疑問。報道這些角度的方式似乎不符合W3C制定的標準,而且它在橫向和縱向模式之間似乎也有所不同。 – kevin 2014-09-01 20:33:33

回答

0

答:他們已經做了一遍。

現在大多數CSS和JS已經標準化爲polyfilled,大型瀏覽器和OS供應商已決定實施不同的處理方式並將設備方向數據傳遞給Web開發人員。此外,該標準不密閉。

我發現這一點:

https://github.com/ajfisher/deviceapi-normaliser

這是不同供應商的應用程序之間的差異非常有用的總和,但是(不幸)不是一個工作的填充工具。對於我的項目,我正在緩慢填充空白,並期望在幾個月內達到完整的填充。與此同時,這是一個腳本,可將WP IE座標轉換爲工作偏航/俯仰/滾動座標集。

// [[PITCH]]

if (event.gamma < 0) { 

     normalized.pitch = -90 - event.gamma ; 

    } else { 

     normalized.pitch = 90 - event.gamma ; 

    } 

// [[YAW]]

if (normalized.pitch > 0 && event.alpha > 180) { 

     normalized.yaw = event.alpha - 180 ; 

    } else if (normalized.pitch > 0 && event.alpha < 180) { 

     normalized.yaw = event.alpha + 180; 

    } 

// [[ROLL]]

if (normalized.pitch > 0) { 

     var sign = Math.abs(event.beta)/event.beta; 

     normalized.roll = sign * 180 - event.beta ; 

    }