<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        JS怎樣讓元素沿著拋物線軌跡運(yùn)動

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 19:54:58
        文檔

        JS怎樣讓元素沿著拋物線軌跡運(yùn)動

        JS怎樣讓元素沿著拋物線軌跡運(yùn)動:這次給大家?guī)鞪S怎樣讓元素沿著拋物線軌跡運(yùn)動,JS讓元素沿著拋物線軌跡運(yùn)動的注意事項有哪些,下面就是實戰(zhàn)案例,一起來看一下。 js實現(xiàn)小球拋物軌跡運(yùn)動的大致思路: 1、用setInterval()方法,進(jìn)行間隔性刷新,更新小球位置,以實現(xiàn)動態(tài)效果2、繪制小球和
        推薦度:
        導(dǎo)讀JS怎樣讓元素沿著拋物線軌跡運(yùn)動:這次給大家?guī)鞪S怎樣讓元素沿著拋物線軌跡運(yùn)動,JS讓元素沿著拋物線軌跡運(yùn)動的注意事項有哪些,下面就是實戰(zhàn)案例,一起來看一下。 js實現(xiàn)小球拋物軌跡運(yùn)動的大致思路: 1、用setInterval()方法,進(jìn)行間隔性刷新,更新小球位置,以實現(xiàn)動態(tài)效果2、繪制小球和

        這次給大家?guī)鞪S怎樣讓元素沿著拋物線軌跡運(yùn)動,JS讓元素沿著拋物線軌跡運(yùn)動的注意事項有哪些,下面就是實戰(zhàn)案例,一起來看一下。

        js實現(xiàn)小球拋物軌跡運(yùn)動的大致思路:

        1、用setInterval()方法,進(jìn)行間隔性刷新,更新小球位置,以實現(xiàn)動態(tài)效果
        2、繪制小球和運(yùn)動區(qū)域,運(yùn)動區(qū)域可通過flex布局實現(xiàn)垂直居中
        3、用物理公式S(y)=1/2*g*t*t,S(x)=V(x)t來計算路徑
        現(xiàn)確定V(x)=4m/s,刷新的時間間隔設(shè)置為0.1s。原本px和米之間的轉(zhuǎn)換,不同尺寸轉(zhuǎn)換不同,本例采用17寸顯示器,大約1px=0.4mm。但瀏覽器太小,因此只能模擬拋物線軌跡,本例將px和米之間縮成100倍。

        第一種:通過border-radius繪制小球

        思路:用border-radius: 50%繪制小球,給小球設(shè)置relative,每次計算小球當(dāng)前位置,賦給top和left。計算運(yùn)動軌跡時,可用變量自增計算setInterval調(diào)用次數(shù),每次是0.1s,這樣可計算總時間。代碼如下:

        <!DOCTYPE>
        <html>
        <head>
         <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
         <title></title>
         <style type="text/css">
         /*給body進(jìn)行flex布局,實現(xiàn)垂直居中*/
         body {
         min-height: 100vh;/*高度適應(yīng)瀏覽器高度*/
         display: flex;
         justify-content: center;/*水平居中*/
         align-items: center;/*垂直居中*/
         font-size: 20px;
         font-weight: bold;
         }
         /*設(shè)置運(yùn)動區(qū)域*/
         #bg {
         width: 600px;
         height: 600px;
         border: 2px solid #e0e0e0;
         border-radius: 4px;/*給p設(shè)置圓角*/
         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記錄次數(shù),可與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轉(zhuǎn)換數(shù)
         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++;//每次調(diào)用,k自增,簡化計算
         if(x>480||y>480){
         clearInterval(t);//小球達(dá)到邊界時,清除setInterval
         }
         },100);//每0.1s調(diào)用一次setInterval的function
        }
        </script>
        </body>
        </html>

        第二種:h5中的canvas繪制小球和運(yùn)動區(qū)域

        思路:采用canvas繪制小球,由于小球不能通過top和left移動,因此它需要每次調(diào)用都要用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>

        兩個方式都能實現(xiàn),計算的方式都是一樣的,只是方式不同。第一個是偏css,采用了border-radius和動態(tài)修改DOM,第二個采用canvas繪制圖形,繪制過程要好好研究。

        相信看了本文案例你已經(jīng)掌握了方法,更多精彩請關(guān)注Gxl網(wǎng)其它相關(guān)文章!

        推薦閱讀:

        移動組件庫cube-ui使用詳解

        JS的class、構(gòu)造函數(shù)、工廠函數(shù)使用方法

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        JS怎樣讓元素沿著拋物線軌跡運(yùn)動

        JS怎樣讓元素沿著拋物線軌跡運(yùn)動:這次給大家?guī)鞪S怎樣讓元素沿著拋物線軌跡運(yùn)動,JS讓元素沿著拋物線軌跡運(yùn)動的注意事項有哪些,下面就是實戰(zhàn)案例,一起來看一下。 js實現(xiàn)小球拋物軌跡運(yùn)動的大致思路: 1、用setInterval()方法,進(jìn)行間隔性刷新,更新小球位置,以實現(xiàn)動態(tài)效果2、繪制小球和
        推薦度:
        標(biāo)簽: 運(yùn)動 元素 js
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 久久黄色免费网站| 日韩视频在线观看免费| 免费精品一区二区三区在线观看| 亚洲AV成人无码网站| 亚洲免费综合色在线视频| 亚洲一区二区三区在线观看蜜桃| 亚洲妇女无套内射精| 女人让男人免费桶爽30分钟| 亚洲影院天堂中文av色| 免费看男人j放进女人j免费看| 在线日韩日本国产亚洲| 中文字幕无码免费久久9一区9| 国精无码欧精品亚洲一区| 中文字幕亚洲免费无线观看日本| 亚洲精品美女久久久久| 毛片免费在线播放| 久久国产亚洲精品无码| 成人女人A级毛片免费软件| 2020久久精品亚洲热综合一本 | 成人毛片免费视频| 亚洲av无码专区首页| 亚洲成a人无码av波多野按摩| 国产免费内射又粗又爽密桃视频| 亚洲国产精品无码久久久不卡| 精品国产污污免费网站aⅴ | 久久久亚洲精华液精华液精华液| 亚洲av日韩av欧v在线天堂| 国产精品亚洲片夜色在线| 国产高清在线精品免费软件| 本免费AV无码专区一区| 亚洲日本香蕉视频观看视频| 日韩高清在线免费观看| 亚洲日韩精品无码专区| 国产亚洲情侣一区二区无码AV| 91av在线免费视频| 亚洲第一街区偷拍街拍| 亚洲AV无码日韩AV无码导航| 免费一区二区三区| 亚洲丶国产丶欧美一区二区三区| 国产亚洲av片在线观看播放| 最近中文字幕无免费视频|