圖片隨手機水平移動-陀螺儀。360度設定條件
阿新 • • 發佈:2019-01-06
// 全景圖-陀螺儀
var flag=true;
var firstAngle = 0;
var instance = 0;
var tuoluo = false;//阻止事件監聽
function deviceorientation(wrap_translateX) {
// 全景圖-陀螺儀
var flag = true;
var firstAngle = 0;
var instance = 0;
if (window.DeviceOrientationEvent) {
window.addEventListener('deviceorientation', function (event) {
if (tuoluo) {
var alpha = event.alpha,
beta = event.beta,
gamma = event.gamma;
if (flag) {
firstAngle = alpha; //記錄第一次值
flag = false;
}
var full_bgimgW = ($(".full-bgimg").width() - $(window).width()) / (2 * 90); //每一度移動距離
var translateZ = parseInt(Math.round(instance) * full_bgimgW) + wrap_translateX;
var changeDeg90 = wrap_translateX / full_bgimgW; //初始,距離中心偏移度數
/*1.根據初始值firstAngle,角度位置判斷*/
if (firstAngle > 90 && firstAngle < 270) {
/*2.根據偏移角度大於90度,判斷*/
if (alpha - firstAngle + changeDeg90 > 90 ) {
var full_bgimgW = ($(".full-bgimg").width() - $(window).width()) / 2;
$(".p6fullView-wrap").css({
'transform': 'translateX(' + full_bgimgW + 'px)'
});
} else if (alpha - firstAngle + changeDeg90 < -90) {
var full_bgimgW = ($(".full-bgimg").width() - $(window).width() * (-1)) / 2;
$(".p6fullView-wrap").css({
'transform': 'translateX(' + full_bgimgW + 'px)'
});
} else {
if (alpha > firstAngle) {
instance = Math.abs(alpha - firstAngle);
} else {
instance = alpha - firstAngle;
}
}
} else if (firstAngle < 90 && firstAngle > 0) {
/*根據alpha當前位置,225度為臨界點,判斷*/
if (alpha > firstAngle && alpha < 225) {
if (alpha - firstAngle + changeDeg90 > 90) {
var full_bgimgW = ($(".full-bgimg").width() - $(window).width()) / 2;
$(".p6fullView-wrap").css({
'transform': 'translateX(' + full_bgimgW + 'px)'
});
} else {
instance = Math.abs(alpha - firstAngle);
}
} else if (alpha < firstAngle && alpha > 0) {
if (alpha - firstAngle + changeDeg90 < -90) {
var full_bgimgW = ($(".full-bgimg").width() - $(window).width() * (-1)) / 2;
$(".p6fullView-wrap").css({
'transform': 'translateX(' + full_bgimgW + 'px)'
});
} else {
instance = Math.abs(alpha - firstAngle) * (-1);
}
} else if (alpha < 360 && alpha > 225) {
if ((alpha - 360 - firstAngle + changeDeg90) < -90) {
var full_bgimgW = ($(".full-bgimg").width() - $(window).width() * (-1)) / 2;
$(".p6fullView-wrap").css({
'transform': 'translateX(' + full_bgimgW + 'px)'
});
} else {
instance = Math.abs(alpha - 360 - firstAngle) * (-1);
}
}
} else if (firstAngle < 360 && firstAngle > 270) {
/*根據alpha當前位置,135度為臨界點,判斷*/
if (alpha < firstAngle && alpha > 135) {
if (alpha - firstAngle + changeDeg90 < -90) {
var full_bgimgW = ($(".full-bgimg").width() - $(window).width() * (-1)) / 2;
$(".p6fullView-wrap").css({
'transform': 'translateX(' + full_bgimgW + 'px)'
});
} else {
instance = Math.abs(alpha - firstAngle) * (-1);
}
} else if (alpha > firstAngle && alpha < 360) {
if ((alpha - firstAngle + changeDeg90) > 90) {
var full_bgimgW = ($(".full-bgimg").width() - $(window).width()) / 2;
$(".p6fullView-wrap").css({
'transform': 'translateX(' + full_bgimgW + 'px)'
});
} else {
instance = Math.abs(alpha - firstAngle);
}
} else if (alpha < 135 && alpha > 0) {
if ((360 - firstAngle + alpha + changeDeg90) > 90) {
var full_bgimgW = ($(".full-bgimg").width() - $(window).width()) / 2;
$(".p6fullView-wrap").css({
'transform': 'translateX(' + full_bgimgW + 'px)'
});
} else {
instance = Math.abs(360 - firstAngle + alpha);
}
}
}
$(".full_bgimgW").html("初始度數:" + firstAngle + "當前度數:" + alpha + "距離中心偏離度數" + changeDeg90 + "偏移距離" + translateZ + "每一度px" + full_bgimgW)
// $(".translateZ").html(translateZ);
// if(instance > 0 && instance < 90){
$(".p6fullView-wrap").css({
'transform': 'translateX(' + translateZ + 'px)'
})
// }
}
}, false);
} else {
document.querySelector('body').innerHTML = '你的瀏覽器不支援陀螺儀';
}
}