【发布时间】:2014-10-26 00:40:47
【问题描述】:
设备方向事件的 w3c 标准:
http://w3c.github.io/deviceorientation/spec-source-orientation.html#deviceorientation
W3C 标准描述了当设备围绕其 z 轴旋转时,该事件的 alpha 属性应该如何改变。
当您将手机放在您面前并直视其屏幕时,z 轴指向您。它是与屏幕重合的平面的法向量。
在我看来,Windows 手机上的工作方式略有不同(= 令人讨厌)。 alpha 属性也随着围绕 x 轴的旋转而变化(即在纵向模式下)。
如何重复:
- 在你面前举起手机(在肖像模式下)。
- 确保 gamma 为负值,这意味着手机略微向后倾斜。
- 现在确保 alpha 约为。零度意味着手机以 y 轴为中心。
- 将手机稍微向左倾斜,使 alpha 大约 30 度,同时确保 gamma 保持负值。
- 现在将手机稍微转向您,使伽玛为正
请注意,当 gamma 变为正值时,alpha 值会跳跃 180 度。这在 W3C 标准中没有描述,还是我遗漏了什么?
-
当您进入横向模式时,会发生另一件奇怪的事情。在横向模式下围绕其 z 轴倾斜手机时,不是 alpha 属性,而是 beta 属性似乎发生了变化?!要在横向模式下更改 alpha 属性,您必须围绕它的(原始)x 轴转动手机,例如,这意味着转动手机的顶部(现在在左侧,就像您在横向模式)远离您。
-
目前我没有 android 或 iOS 设备可供使用,但至少 Chrome 桌面浏览器中的模拟器的行为完全不同(并且似乎符合 W3C 标准)。
-
我在这里放了一个简单的测试脚本:
http://locaboa.com/wpdotest.html
(在智能手机上打开)
-
我做错了什么/错过了什么吗?
关于如何纠正这个问题的任何想法?
=========================
编辑:刚刚在 iPhone 上进行了测试,似乎与 windows phone 的行为方式相同......
【问题讨论】:
-
嗨乔佛里,不幸的是,这并没有回答这个问题。我了解横向和纵向模式之间的区别,并且我知道如何检测它们之间的区别。我的问题是设备报告的实际角度与其在 3D 空间中的方向有关。这些角度的报告方式似乎不符合 W3C 设定的标准,而且横向和纵向模式之间似乎也有所不同。
标签: javascript html internet-explorer windows-phone-8