jQuery實現的分子運動小球碰撞效果_jquery
本文實例講述了jQuery實現的分子運動小球碰撞效果。分享給大家參考,具體如下:
先看效果圖吧,因為小球是運動狀態的,不好截圖,這裡就先大體畫了一下路線,表示大體意思吧,如果想看真實的效果,自己粘貼下去運行:
小球有點小喲,嘿嘿,沒有對細節進行詳細的處理,如果像讓它完美一點,自己處理下吧!這裡是模擬的理想狀態下的,沒有摩擦力與組裡的分子碰撞運動,高科技喲~~~~~~mu~a
程式碼也沒有整理,如果有心的話,把它整理成物件導向形式的吧!
程式碼如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script src="jquery-1.7.1.min.js" type="text/javascript"></script> <script type="text/javascript" > var dim_half_past_PI = dimAngle(Math.PI / 2); // Math.PI/2的约数 var lastAngle = dimAngle(Math.PI/8); // 发射角度(0-dimAngle(Math.PI)) var v = 120; //飞行速度【>0】 var lastPosition = {}; // 最后一次碰撞坐标 var lastTime = ""; // 最后一次碰撞时间 var lastDirection = "top"; // 开始发射方向(top,bottom,left,right) var horizen = 1; // 水品方向的积数 var vertical = 1; // 竖直方向的积数 var box = {}; function dimAngle(angle) { var tempAngle = angle + ""; return parseFloat(tempAngle.substring(0, 6)); } function getWillDirection(position, box) { var direction = lastDirection; if (position.x < box.left) { direction = "right"; } if (position.x > box.right) { direction = "left" } if (position.y < box.top) { direction = "bottom"; } if (position.y > box.bottom) { direction = "top"; } return direction; } function getScale(direction, angle) { switch(direction){ case "top": vertical = -1; if (angle < dim_half_past_PI) { horizen = 1; } if (angle > dim_half_past_PI) { horizen = -1; } if (angle == dim_half_past_PI) { horizen = 0; } break; case "left": horizen = -1; if (angle > dim_half_past_PI) { vertical = 1; } if (angle < dim_half_past_PI) { vertical = -1; } if (angle == dim_half_past_PI) { vertical = 0; } break; case "bottom": vertical = 1; if(angle > dim_half_past_PI) { horizen = 1; } if(angle < dim_half_past_PI) { horizen = -1; } if(angle == dim_half_past_PI) { horizen = 0; } break; case "right": horizen = 1; if (angle > dim_half_past_PI) { vertical = -1; } if (angle < dim_half_past_PI) { vertical = 1; } if (angle == dim_half_past_PI) { vertical = 0; } break; } } function getOutAngle(inAngle) { if (inAngle == dim_half_past_PI || inAngle == 0) { return inAngle; } else { return dim_half_past_PI - inAngle; } } function setPosition(obj, position) { obj.css({ "left": position.x +"px", "top": position.y +"px"}); } function run(obj) { var vx = Math.cos(lastAngle) * v; var vy = Math.sin(lastAngle) * v; var runTime = (new Date().getTime() - lastTime) / 1000; getScale(lastDirection, lastAngle); var sx = vx * runTime * horizen; var sy = vy * runTime * vertical; var position = { x: lastPosition.x + sx, y: lastPosition.y + sy }; setPosition(obj, position); var currentDirection = getWillDirection(position, box); console.log(currentDirection +":"+lastDirection+":"+vertical+":"+horizen+":"+lastAngle+":"+dim_half_past_PI); // 如果没有发生碰撞 if (currentDirection != lastDirection) { // 如果发生了碰撞 lastDirection = currentDirection; lastPosition = position; lastTime = new Date().getTime(); lastAngle = getOutAngle(lastAngle); } setTimeout(function () { run(obj); }, 30); } $(document).ready(function () { var boxer = $("#box"); var x = parseInt(boxer.offset().left); var y = parseInt(boxer.offset().top); box = { left: x, top: y, right: x + boxer.width(), bottom: y + boxer.height() }; var runner = $("#runner"); lastTime = new Date().getTime(); lastPosition = { x: x, y: y + boxer.height() }; run(runner); }); </script> <style type="text/css" > body { margin:0; padding:0; } #box { margin:0 auto; width:500px; height:500px; border:3px solid #DDDDDD; border-radius:4px; -wekit-border-radius:4px; -moz-border-radius:4px;} #runner { width:10px; height:10px; font-size:10px; color:black; padding:0; position:absolute; left:100px; top:480px;} </style> </head> <body> <div id="box"> <div id="runner">●</div> </div> </body> </html>
更多關於jQuery特效相關內容有興趣的讀者可查看本站專題:《jQuery常見經典特效總結》及《jQuery動畫與特效用法總結》
》>
希望本文所述對大家jQuery程式設計有所幫助。
熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

jQuery引用方法詳解:快速上手指南jQuery是一個受歡迎的JavaScript庫,被廣泛用於網站開發中,它簡化了JavaScript編程,並為開發者提供了豐富的功能和特性。本文將詳細介紹jQuery的引用方法,並提供具體的程式碼範例,幫助讀者快速上手。引入jQuery首先,我們需要在HTML檔案中引入jQuery函式庫。可以透過CDN連結的方式引入,也可以下載

jQuery中如何使用PUT請求方式?在jQuery中,發送PUT請求的方法與發送其他類型的請求類似,但需要注意一些細節和參數設定。 PUT請求通常用於更新資源,例如更新資料庫中的資料或更新伺服器上的檔案。以下是在jQuery中使用PUT請求方式的具體程式碼範例。首先,確保引入了jQuery庫文件,然後可以透過以下方式發送PUT請求:$.ajax({u

jQuery是一款廣泛應用於前端開發的快速、小巧、功能豐富的JavaScript庫。自2006年發布以來,jQuery已成為眾多開發者的首選工具之一,但在實際應用中,它也不乏一些優點和缺點。本文將深度剖析jQuery的優勢與劣勢,並結合具體的程式碼範例進行說明。優點:1.簡潔的語法jQuery的語法設計簡潔明了,可以大幅提升程式碼的可讀性和編寫效率。比如,

標題:jQuery小技巧:快速修改頁面所有a標籤的文字在網頁開發中,我們經常需要對頁面中的元素進行修改和操作。使用jQuery時,有時候需要一次修改頁面中所有a標籤的文字內容,這樣可以節省時間和精力。以下將介紹如何使用jQuery快速修改頁面所有a標籤的文本,同時給出具體的程式碼範例。首先,我們需要引入jQuery庫文件,確保在頁面中引入了以下程式碼:<

標題:使用jQuery修改所有a標籤的文字內容jQuery是一款受歡迎的JavaScript庫,被廣泛用於處理DOM操作。在網頁開發中,經常會遇到需要修改頁面上連結標籤(a標籤)的文字內容的需求。本文將介紹如何使用jQuery來實現這個目標,並提供具體的程式碼範例。首先,我們需要在頁面中引入jQuery庫。在HTML檔案中加入以下程式碼:

jQuery如何移除元素的height屬性?在前端開發中,經常會遇到需要操作元素的高度屬性的需求。有時候,我們可能需要動態改變元素的高度,而有時候又需要移除元素的高度屬性。本文將介紹如何使用jQuery來移除元素的高度屬性,並提供具體的程式碼範例。在使用jQuery操作高度屬性之前,我們首先需要了解CSS中的height屬性。 height屬性用於設定元素的高度

jQuery是一種流行的JavaScript庫,被廣泛用於處理網頁中的DOM操作和事件處理。在jQuery中,eq()方法是用來選擇指定索引位置的元素的方法,具體使用方法和應用場景如下。在jQuery中,eq()方法選擇指定索引位置的元素。索引位置從0開始計數,即第一個元素的索引是0,第二個元素的索引是1,依此類推。 eq()方法的語法如下:$("s

如何判斷jQuery元素是否具有特定屬性?在使用jQuery操作DOM元素時,常會遇到需要判斷元素是否具有某個特定屬性的情況。在這種情況下,我們可以藉助jQuery提供的方法來輕鬆實現這項功能。以下將介紹兩種常用的方法來判斷一個jQuery元素是否具有特定屬性,並附上具體的程式碼範例。方法一:使用attr()方法和typeof運算子//判斷元素是否具有特定屬
