本文实例讲述了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) {










