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;}










