• 摇钱树效果


    $(function(){
        $('.t_back').click(function() {
            window.history.back();
        });
    //    陀螺仪相关的变量
        var tl_flage=true;
    //    重力感应器相关定义的变量
        var chaTime=5;
        var endTime,startTime,alpha,beta,gamma,delA,delB,delG,lastAcc;
        var zl_flage=true;
        //HTML5摇动API
        
        if(window.DeviceMotionEvent) {
            var SHAKE_THRESHOLD = 1200;
            var last_update = 0;
            var x, y, z, last_x, last_y, last_z;
            
            function deviceMotionHandler(eventData) {
                var acceleration = eventData.accelerationIncludingGravity;
                var curTime = new Date().getTime();
                if((curTime - last_update) > 300) {
                    var diffTime = curTime - last_update;
                    last_update = curTime;
                    x = acceleration.x;
                    y = acceleration.y;
                    z = acceleration.z;
                    var speed = Math.abs(x + y + z - last_x - last_y - last_z) / diffTime * 10000;
                    $('.p2').html(speed);
                    if(speed > SHAKE_THRESHOLD) {
                        if(tl_flage) {
                            $('.jl_box').fadeIn();
                            tl_flage = false;
                        }
                    }
                    last_x = x;
                    last_y = y;
                    last_z = z;
                }
            }; 
            window.addEventListener('devicemotion', deviceMotionHandler, false);
        }else if(window.DeviceOrientationEvent){
        //    重力感应api
            window.addEventListener('deviceorientation',function(e){
    //            开始的时间
                startTime=new Date();
                if(!lastAcc) {
                    lastAcc = e;
                    delA = parseInt( Math.abs(180-Math.abs(e.alpha) ) );
                    delB = parseInt( Math.abs(90-Math.abs(e.beta) ) );
                    delG = parseInt( Math.abs(90-Math.abs(e.gamma) ) );
                }else{
            //        设备指示的方向
                    alpha = e.alpha,
            //      设备绕x轴旋转的角度
                    beta = e.beta,
            //         设备绕y轴旋转的角度
                    gamma = e.gamma;
                    delA = parseInt( Math.abs( Math.abs(180-Math.abs(e.alpha)) - Math.abs(180-Math.abs(lastAcc.alpha)) ) );
                    delB = parseInt( Math.abs( Math.abs(90-Math.abs(e.beta)) - Math.abs(90-Math.abs(lastAcc.beta)) ) );
                    delG = parseInt( Math.abs( Math.abs(90-Math.abs(e.gamma)) - Math.abs(90-Math.abs(lastAcc.gamma)) ) );
                };
    //            摇动时间差小于3可以触发
                if(chaTime<3){
                    if( (delA > 15 && delB > 15) || (delA > 15 && delG > 15) || (delB > 15 || delG > 15) ) {
                        if(zl_flage){
                            $('.jl_box').fadeIn();
                            zl_flage=false;
                        };
                    };
                };
                lastAcc = e;
    //            结束的时间
                endTime=new Date();
    //            快速摇动才可以触发的时间差值;
                chaTime=endTime-startTime;
            });
        }else{
            alert("您的浏览器不支持陀螺仪和重力感应器");
        };
    
        $('.jl_box_con_btn').bind('click',function(){
            $('.jl_box').fadeOut();
            tl_flage=true;
            zl_flage=true;
        });
    })

    1、orientation是重力感应api,获得的值与角度有关。

    alpha是手机放在桌子上转。表示设备沿z轴上的旋转角度,范围为0~360。

    beta是表示设备在x轴上的旋转角度,范围为-180~180。它描述的是设备由前向后旋转的情况。

    gamma表示设备在y轴上的旋转角度,范围为-90~90。它描述的是设备由左向右旋转的情况。

    2、devicemotion是陀螺仪api,手机有陀螺仪才能用这个。

    • x: 西向东,x轴的位置变化。
    • y: 南向北,y轴的位置变化。
    • z: 垂直地面,z轴的位置变化。
  • 相关阅读:
    备忘录模式
    状态模式(state pattern)
    【2020-12-08】你努力所得洞见是独一无二的
    【2020-12-07】这种紧巴巴的日子不多了,好好享受吧
    【2020-12-06】人生十三信条
    【2020-12-05】人生十三信条
    【2020-12-04】责任,是走向智慧的方向
    【2020-12-03】偶尔打个篮球,还是有收获的
    【2020-12-02】实践,是在用意念去行动
    【2020-12-01】高收益的家庭投资理财推荐
  • 原文地址:https://www.cnblogs.com/gaidalou/p/8267037.html
Copyright © 2020-2023  润新知