问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

小球左右滚动,滚动距离越来越小的js代码怎么写?

发布网友 发布时间:2022-04-22 18:50

我来回答

3个回答

懂视网 时间:2022-04-22 23:11

这篇文章主要介绍了JS小球抛物线轨迹运动的两种实现方法,结合实例形式分析了javascript实现小球抛物线运动的相关计算与图形绘制操作技巧,需要的朋友可以参考下

本文实例讲述了JS小球抛物线轨迹运动的两种实现方法。分享给大家供大家参考,具体如下:

js实现小球抛物轨迹运动的大致思路:

1、用setInterval()方法,进行间隔性刷新,更新小球位置,以实现动态效果
2、绘制小球和运动区域,运动区域可通过flex布局实现垂直居中
3、用物理公式S(y)=1/2*g*t*t,S(x)=V(x)t来计算路径
现确定V(x)=4m/s,刷新的时间间隔设置为0.1s。原本px和米之间的转换,不同尺寸转换不同,本例采用17寸显示器,大约1px=0.4mm。但浏览器太小,因此只能模拟抛物线轨迹,本例将px和米之间缩成100倍。

第一种:通过border-radius绘制小球

思路:用border-radius: 50%绘制小球,给小球设置relative,每次计算小球当前位置,赋给top和left。计算运动轨迹时,可用变量自增计算setInterval调用次数,每次是0.1s,这样可计算总时间。代码如下:

<!DOCTYPE>
<html>
<head>
 <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
 <title></title>
 <style type="text/css">
 /*给body进行flex布局,实现垂直居中*/
 body {
 min-height: 100vh;/*高度适应浏览器高度*/
 display: flex;
 justify-content: center;/*水平居中*/
 align-items: center;/*垂直居中*/
 font-size: 20px;
 font-weight: bold;
 }
 /*设置运动区域*/
 #bg {
 width: 600px;
 height: 600px;
 border: 2px solid #e0e0e0;
 border-radius: 4px;/*给p设置圆角*/
 padding: 20px;
 }
 /*生成小球,并定义初始位置*/
 #ball {
 border-radius: 50%;/*可把正方形变成圆形,50%即可*/
 background: #e0e0e0;
 width: 60px;
 height: 60px;
 position: relative;
 top: 30px;
 left: 30px;
 }
 button {
 width: 80px;
 height: 30px;
 border-radius: 4px;
 color: #fff;
 background: #AA7ECC;
 font-size: 20px;
 font-weight: bold;
 margin-left: 20px;
 }
 </style>
</head>
<body>
<p id="bg">
 此时水平速度为:4<button onclick="start()">演示</button>
 <p id="ball"></p>
</p>
<script type="text/javascript">
function start(){
 var x,y,k=1,t;
 //x是水平方向移动路径;y是垂直方向的;k记录次数,可与0.1相乘得时间;t记录setInterval的返回id,用于clearInterval
 t = setInterval(function(){
 x = 30+0.1*k*4*100;
 //S(x)=S(0)+t*V(x),100是自定义的米到px转换数
 y = 30+1/2*9.8*0.1*k*0.1*k*100;//S(y)=S(0)+1/2*g*t*t
 var j = document.getElementById("ball");
 //通过修改小球的top和left,修改小球的位置
 j.style.top = y;
 j.style.left = x;
 k++;//每次调用,k自增,简化计算
 if(x>480||y>480){
 clearInterval(t);//小球达到边界时,清除setInterval
 }
 },100);//每0.1s调用一次setInterval的function
}
</script>
</body>
</html>

第二种:h5中的canvas绘制小球和运动区域

思路:采用canvas绘制小球,由于小球不能通过top和left移动,因此它需要每次调用都要用clearRect清空画布,然后绘制计算后位置的小球。代码如下:

<!DOCTYPE>
<html>
<head>
 <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
 <title></title>
 <style type="text/css">
 body {
 min-height: 100vh;
 display: flex;
 justify-content: center;
 align-items: center;
 }
 #myCanvas {
 box-shadow: -2px -2px 2px #efefef,5px 5px 5px #b9b9b9;
 }
 </style>
</head>
<body>
<canvas id="myCanvas" width="600px" height="600px"></canvas>
<script type="text/javascript">
var x=50,y=50,k=1;
var c=document.getElementById("myCanvas");
var cxt=c.getContext("2d");
cxt.fillStyle="#e0e0e0";
cxt.beginPath();
cxt.arc(x,y,30,0,Math.PI*2,true);
cxt.closePath();
cxt.fill();
t=setInterval("parabola()",100);
function parabola(){
 cxt.clearRect(0,0,600,600);//清除原始图形
 cxt.beginPath();
 x=50+0.1*k*4*100;y=50+9.8*0.1*k*0.1*k*1/2*100;
 cxt.arc(x,y,30,0,Math.PI*2,true);
 cxt.closePath();
 cxt.fill();
 k++;
 if(x>520||y>520){
 clearInterval(t);
 }
}
</script>
</body>
</html>

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

在JS中如何实现网页版计算器

在Angular2中如何去除url中的#号(详细教程)

在Vue.js中如何使用移动组件库(详细教程)

热心网友 时间:2022-04-22 20:19

左右滚动会写的话,加个循环控制滚动距离就可以,比如每滚动一个来回,减去10%的距离,直到距离小于多少就停止滚动

热心网友 时间:2022-04-22 21:37

这是一个用的非常多的左右滚动的代码。http://www.lanrentuku.com/js/jiaodiantu-813.html
还有其他的是:http://www.jb51.net/article/14422.htm
这个各个滚动都有了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
按现行会计制度的规定,短期借款所发生的利息,一般应记入( )科目。 省钱输送机 江西同步带欧规皮带滚轮模组规格 请问91年3月12日是什么星座拜托各位大神 1991年3月11的双鱼座怎样拜托了各位 谢谢 ...年11月3号。这两个时间出生的人各是什么塔罗牌?拜托各位大神... 孤岛惊魂4怎么不显示dlc 微信百万保障诈骗是怎么回事 秋季大棚里应候种植什么蔬菜最适合 上海音乐学院钢琴十级通过率 大话西游2 平民队怎样能克制敏队 大话西游2霄汉鬼 4介伤害高么 大话西游2 里的法术(比如:鬼火)狂暴几率和法术(鬼火)狂暴程度有什么区别 大话2鬼族三尸虫法术 跪求好心人分享原始狂暴:大脚怪传奇2017年上映的由Casey主演的免费高清百度云资源 请问大佬有原始狂暴:大脚怪传奇2017年上映的由Gagliardi主演的免费高清百度云资源吗 请问大佬有原始狂暴:大脚怪传奇2017年上映的由Gagliardi主演的高清视频在线观看资源吗 求《原始狂暴:大脚怪传奇》百度云免费在线观看,PatrickMagee导演的 求 原始狂暴:大脚怪传奇 百度云免费在线观看资源 《原始狂暴:大脚怪传奇(2017)》百度网盘高清无删减版在线观看,PatrickMagee导演的 欠钱不还有借条可以报警处理吗 安徽阜阳水浒烤肉订餐两个人怎么才可以便宜一点 北斗水浒烤肉光告词? 水浒烤肉加盟要多少钱 水浒烤肉加盟多少钱 水浒烤肉忠义堂和袁家水泊什么区别? 正宗大宋水浒烤肉(老河大店)怎么样,好不 河南水浒烤肉餐饮服务有限公司怎么样? 小球运动轨迹为抛物线 为什么模拟器上了ip进不了游戏 手机版孤岛惊魂原始杀戮怎么切换狂暴碎片? 大话2 14级项链原始抗混38 炼化三尸虫狂暴几率19 三尸狂暴程度3 强三尸回血程度10忽视抗鬼火2 克金8 大话西游2 11级项链最高水系狂暴9,加强水1 原始+20混 +27灵多少钱? 离婚协议书无财产无债务有子女的怎么写 哪位大佬有百度云原始狂暴:大脚怪传奇百度云高清资源 打电话时可以查到对方所在的位置吗? 被封多少次会长期封号? 一个最多可以被封几次 封几次会永久封停 微信可以冻结几次别的的 一年可以解封几次 一个能被封几次 为什么婴儿一出生就会呼吸 一个一个月能够帮助别人解封几次? 一个,能给别人解封几次? 我上个月给别人解 被封多少次会长期封号? js如和控制小球左右来回移动? 英特尔侵犯了芯片专利被判赔22亿美元,这对全球科技行业是否会有影响? 写一篇草船借箭的读后 河南健源堂药业有限公司生产的&quot;高效骨痛宁&quot;.这药是真是假啊?