js动画-通过setInterval实现圆周运动

通过JS中的setInterval方法可以实现盒子的移动

 只需要定义一个定时器,然后设置时间,改变盒子的坐标即可实现

<body>
		<div class="f">
			<div class="z" id="z" style="top: 0;">
				
			</div>
		</div>
	</body>
	<script>
		let z=document.getElementById('z')
		let x=0,y=0
		let dsq=setInterval(()=>{
			if (x>=400||y>=400){
				clearInterval(dsq)
			}
			x++,
			y++
			z.style.top=y+'px'
			z.style.left=x+'px'
		},10);
	</script>
圆周运动

通过定时器和小球的运动轨迹即可实现圆周运动

body部分创建一个3圈的圆环和两个小圆球,通过定位让小球在圆弧的指定位置,定义一个btn用来控制小球运动

 

js部分

首先获取蓝色小球的运动半径和圆心位置

//获取b1蓝色小球
    let b1=document.getElementById('b1')
//r表示运动轨迹的半径,x0,y0表示圆心的坐标
    let r=200,x0=250,y0=250;
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 然后创建小球球心的坐标

//定义x,y表示小球的球心的坐标
    let x=50,y=50

 最后创建定时器让小球做圆周运动

 function start1(){
        //开启上半圆的定时器
        let sbr=setInterval(() => {
            x++
            y=-Math.sqrt(Math.pow(r,2)-Math.pow(x-x0,2))+y0
            b1.style.top=y-50 +'px'
            b1.style.left=x-50 +'px'
            if(x==450&&y==250){
                //alert('右切点')
                //取消上半圆的定时器
                clearInterval(sbr)
                //开启下半圆的定时器
                let xbr=setInterval(()=>{
                    x--
                    y=Math.sqrt(Math.pow(r,2)-Math.pow(x-x0,2))+y0
                    b1.style.top=y-50 +'px'
                    b1.style.left=x-50 +'px'
                    //左切点
                    if(x==50&&y==250){
                        //取消下半圆的定时器
                        clearInterval(xbr)
                        //开启上半圆定时器
                        start1()//递归
                    }
                })
            }
        }, 10);
    }

 通过x^{2}+y^{2}=r^{2}可以推导出x,y的坐标

圆周运动分为两个部分1个由下到上的抛物线,然后折返回来

代码中if(x==450&&y==250)判断是小球从最左侧运动到最右侧的顶点来结束第一个定时器

然后开启下半的定时器完成剩下的一半。

最后用递归的方式让小球不停的旋转。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值