日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

原生js实现红球碰撞篮球效果

發布時間:2024/3/26 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 原生js实现红球碰撞篮球效果 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.?屏幕中隨機產生n個藍色大小不一的氣泡,坐標隨機

2.?紅色氣泡跟隨鼠標移動

3.?當紅色氣泡會與藍色氣泡發生碰撞效果(類似桌球)?

4.?紅色氣泡會被屏幕邊緣阻擋

5.?藍色氣泡左右屏上下屏互通

6.?藍色氣泡的運動及互動行為請自由發揮

HTML部分:

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>上機</title><link rel="stylesheet" href="./css/index.css"> </head> <body><div class="container"><img class = "redBall" src="./images/1.png" alt="紅球" width="100px" height="100px"><img class = "blueBall" src="./images/2.png" alt="籃球"></div><script src = "./js/index.js"></script> </body> </html>


CSS部分:

*{margin:0;padding: 0; } .container{width: 800px;height: 400px;position: relative;margin: 0 auto;border: 1px solid #ddd;overflow: hidden; } .blueBall{width: 80px;height: 80px;position: absolute;z-index: 1;transition: top 2s,left 2s; } .redBall{position: absolute;z-index: 2; }

js部分:

var blueBall = document.getElementsByClassName("blueBall"); var container = document.getElementsByClassName("container"); var redBall = document.getElementsByClassName("redBall")[0];//創建籃球DOM var blueimg = document.createElement("img"); blueimg.setAttribute("src","./images/2.png"); blueimg.setAttribute("alt","籃球"); blueimg.setAttribute("class","blueBall");//藍色球數量最少8個最多16個; var ballNum = Math.ceil(Math.random() * 8 + 8);for (var i = ballNum - 1; i >= 0; i--) {let oi = blueimg.cloneNode(true);container[0].appendChild(oi); }/* *設置球的大小 */ for (var i = 0; i < blueBall.length; i++) {let ballSize = hwsize();blueBall[i].style.width = ballSize + "px";blueBall[i].style.height = ballSize + "px"; }/* *隨機排序藍球 */ for (var i = 0; i < blueBall.length; i++) {blueBall[i].style.top = Math.ceil(Math.random() * 400) + "px";blueBall[i].style.left = Math.ceil(Math.random() * 800) + "px"; }//獲取籃球大小范圍為50-100 function hwsize() { return Math.ceil(Math.random() * 50) + 50; }/* *紅球隨鼠標移動 *code start */ container[0].addEventListener("mousemove",function(e){var redYX = redPositionX(e);redBall.style.left =redYX.x + "px";redBall.style.top = redYX.y + "px";for (let i = blueBall.length - 1; i >= 0; i--) {blueBoom(i);} });function redPositionX(e) {var redXY = {x: 0,y: 0 };var ok = e.clientX - container[0].offsetLeft - redBall.width/2;var yes = e.clientY - container[0].offsetTop - redBall.height/2;console.log(yes);if(ok < 0){redXY.x = 0;}else{if(ok > (800 - redBall.width)){redXY.x = 800 - redBall.width;}else{redXY.x = ok;}}if(yes < 0){redXY.y = 0;}else{if(yes > (400 - redBall.height)){redXY.y = 400 - redBall.height;}else{redXY.y = yes;}}return redXY; } /* *code end *//* *實現藍色小球的碰撞 *code start */ function blueBoom(i){//獲取籃球相對瀏覽器的位置var blueX = blueBall[i].offsetLeft;var blueY = blueBall[i].offsetTop;//獲取紅球相對瀏覽器的位置var redX = redBall.offsetLeft;var redY = redBall.offsetTop;sizeX = redX - blueX;sizeY = redY - blueY;if(sizeX < 0){var absX = Math.abs(sizeX);if(absX < redBall.width){if(sizeY < 0 ){var absY = Math.abs(sizeY);if(absY < redBall.width){//code 小球移動blueBall[i].style.top = 50 + "px";blueBall[i].style.left = 50 + "px";}return;}else{if(absY < blueBall[i].width){//code 小球移動}return;} }return;}else{if(absX < blueBall[i].width){if(sizeY < 0 ){var absY = Math.abs(sizeY);if(absY < redBall.width){//code 小球移動}return;}else{if(absY < blueBall[i].width){//code 小球移動}return;}}return;}}代碼并為完成,但是大致思路就是這樣,只需要在我寫注釋的地方規定籃球的移動軌跡即可。紅籃球圖片奉上





總結

以上是生活随笔為你收集整理的原生js实现红球碰撞篮球效果的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。