摇钱树效果

$(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轴的位置变化。

转载于:https://www.cnblogs.com/gaidalou/p/8267037.html

实现樱花树摇摆的效果,通常会在游戏或动画项目中使用计算机图形学原理,例如CSS3动画、JavaScript或游戏引擎(如Unity)。如果是在C语言这种低级别的语言中,可能会利用ASCII艺术或者模拟像素级位置的变化来达到视觉上的摇曳。以下是一个简化的概念: 1. **字符表示**:可以使用特定的字符(比如“*”)作为樱花树的叶子,然后通过改变每个叶子的位置(x, y坐标),看起来像是在摇摆。 ```c struct SakuraBranch { char symbol; int x, y; int angle; }; void update_sakura_branch(SakuraBranch* branch, int speed) { branch->angle += speed; // 沿着指定方向增加摇摆角度 if (branch->angle >= 360) { branch->angle -= 360; } else if (branch->angle < 0) { branch->angle += 360; } // 更新位置,基于当前角度 int newX = branch->x + cos(branch->angle * M_PI / 180) * some_distance; int newY = branch->y + sin(branch->angle * M_PI / 180) * some_distance; branch->x = newX; branch->y = newY; } ``` 2. **主循环**:在一个不断运行的循环里,调用`update_sakura_branch`函数,每次循环让树枝稍微移动一点,并保持其摇摆状态。 ```c while (true) { for (SakuraBranch* branch in sakuraTree) { update_sakura_branch(branch, random_value); // 按随机速度摇摆 print(branch->symbol, branch->x, branch->y); } } ``` 注意这只是一个非常基础的示例,真实场景下的樱花树摇摆效果会更复杂,包括更多的树枝和叶子,以及动态的颜色变化等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值