我正在使用window.DeviceOrientationEvent
來監聽設備方向的更改。但是,我想校準我的應用程序,以將方向更改相對於報告爲原始方向。爲了做到這一點,我已經提出了以下解決方案:在不使用監聽器的情況下獲取設備方向(alpha,beta,gamma)?
originalOrientation.freeze = false;
window.addEventListener('deviceorientation', function(e){
var orientation = {g: Math.round(e.gamma), b: Math.round(e.beta), a: Math.round(e.alpha), o: window.orientation || 0};
if(!originalOrientation.freeze){
originalOrientation = orientation;
originalOrientation.freeze = true;
}
});
這基本上採取由deviceorientation
聽衆和「凍結」它,所以它不會不斷更新返回的第一個值。我不喜歡這種方法,因爲我寧願在代碼中的其他地方進行校準,而不是收集實際方向的地方。我也不想連接監聽器兩次,因爲回調中返回的值將會丟失。
TLDR;
有沒有一種方法可以調用像window.getDeviceOrientation()
這樣的方式來同步返回alpha,beta和gamma值而不是附加回調?