[英]Who understands device orientation on Windows Phone?
設備定向事件的w3c標准:
http://w3c.github.io/deviceorientation/spec-source-orientation.html#deviceorientation
W3C標准描述了當設備繞其z軸旋轉時,此事件的alpha屬性應如何更改。
當您將手機直望屏幕時,z軸指向您。 它是與屏幕重合的平面的法線向量。
在我看來,Windows Phone上的工作略有不同(令人討厭)。 alpha屬性也隨着繞x軸旋轉而改變(即,在縱向模式下)。
如何重復:
請注意,當伽瑪值變為正數時,alpha值如何躍升180度。 W3C標准中沒有對此進行描述,還是我錯過了一些事情?
-
當您進入橫向模式時,另一件奇怪的事情發生了。 在橫向模式下將手機繞其Z軸傾斜時,alpha屬性沒有改變,但是beta屬性似乎改變了嗎? 要在橫向模式下更改alpha屬性,您必須繞着手機的(原始)x軸旋轉,例如,這意味着要旋轉手機的頂部(現在位於左側)。橫向模式)。
-
我目前沒有可使用的android或iOS設備,但是至少Chrome桌面瀏覽器中的模擬器的行為完全不同(而且似乎與W3C標准一致)。
-
我在這里放一個簡單的測試腳本:
http://locaboa.com/wpdotest.html
(在智能手機上打開)
-
我在做錯什么/缺少什么嗎?
有什么想法可以解決這個問題嗎?
=======================
編輯:剛剛在iPhone上進行了測試,似乎行為與Windows Phone相同...
答:他們又做了一次。
既然大多數CSS和JS已經標准化了polyfill,大型瀏覽器和OS供應商已經決定采用不同的方式來處理設備定向數據並將其傳遞給Web開發人員。 另外,該標准也不是氣密的。
我找到了這個:
https://github.com/ajfisher/deviceapi-normaliser
這是不同供應商的應用程序之間差異的非常有用的總和,但(不幸的)不是有效的polyfill。 對於我的項目,我正在慢慢填補空白,並期望在幾個月內達到完全填充。 同時,這里有一個腳本將WP IE坐標轉換為有效的偏航/俯仰/橫滾坐標集。
// [[PITCH]]
if ( event.gamma < 0 ) {
normalized.pitch = -90 - event.gamma ;
} else {
normalized.pitch = 90 - event.gamma ;
}
// [[偏航]]
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 ;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.