让图片直线移动到鼠标点击位置,类似游戏里的人物走动!
2008-12-12 15:09
501 查看
<body onclick="moveImg(event);">
<div style="position:absolute;left:0px;top:0px;" id="img"><img src="img.gif"></div>
</body>
<script>
var img=document.getElementById("img");
var time=5;//时间,单位毫秒
var speed=2;//(speed/time)速度,单位象素,起点到终点的直线速度
var moveObj=null;
function moveImg(event){
var eventevent=event||window.event;
if(moveObj!=null){
window.clearInterval(moveObj);
moveObj=null;
}
var imgX=parseInt(img.style.left);
var imgY=parseInt(img.style.top);
var moveX=event.clientX;
var moveY=event.clientY;
var x=moveX-imgX;
var y=moveY-imgY;
//计算速度基数
var speedspeedNum=speed/Math.sqrt(x*x+y*y);
//计算X轴速度
var speedX=speedNum*x;
//计算Y轴速度
var speedY=speedNum*y;
//alert(speedX+":"+speedY);
//移动图片
moveObj=window.setInterval(function(){moveImage(speedX,speedY,moveX,moveY);},time);
}
var mx=0;my=0;
function moveImage(x,y,endX,endY){
//由于网页上left属性改变量小于1的时候,按1改变,所以计算出当移动量大于1时才改变left属性
mxmx=mx+x;
var m=Math.floor(mx);
if(m<0){
m++;
}
if(m>=1 || m<=-1){
img.style.left=(parseInt(img.style.left)+m)+"px";
mxmx=mx-m;
}
//由于网页上top属性改变量小于1的时候,按1改变,所以计算出当移动量大于1时才改变top属性
mymy=my+y;
var n=Math.floor(my);
if(n<0){
n++;
}
if(n>=1 || n<=-1){
img.style.top=(parseInt(img.style.top)+n)+"px";
mymy=my-n;
}
//当移动到指定位置时停止移动
var xflag=false;
var yflag=false;
if(x>=0){
if(parseInt(img.style.left)>=endX){
xflag=true;
}
}else{
if(parseInt(img.style.left)<=endX){
xflag=true;
}
}
if(y>=0){
if(parseInt(img.style.top)>=endY){
yflag=true;
}
}else{
if(parseInt(img.style.top)<=endY){
yflag=true;
}
}
if(xflag && yflag){
window.clearInterval(moveObj);
moveObj=null;
}
}
</script>
http://blog.csdn.net/lip009/archive/2007/11/15/1887357.aspx
<div style="position:absolute;left:0px;top:0px;" id="img"><img src="img.gif"></div>
</body>
<script>
var img=document.getElementById("img");
var time=5;//时间,单位毫秒
var speed=2;//(speed/time)速度,单位象素,起点到终点的直线速度
var moveObj=null;
function moveImg(event){
var eventevent=event||window.event;
if(moveObj!=null){
window.clearInterval(moveObj);
moveObj=null;
}
var imgX=parseInt(img.style.left);
var imgY=parseInt(img.style.top);
var moveX=event.clientX;
var moveY=event.clientY;
var x=moveX-imgX;
var y=moveY-imgY;
//计算速度基数
var speedspeedNum=speed/Math.sqrt(x*x+y*y);
//计算X轴速度
var speedX=speedNum*x;
//计算Y轴速度
var speedY=speedNum*y;
//alert(speedX+":"+speedY);
//移动图片
moveObj=window.setInterval(function(){moveImage(speedX,speedY,moveX,moveY);},time);
}
var mx=0;my=0;
function moveImage(x,y,endX,endY){
//由于网页上left属性改变量小于1的时候,按1改变,所以计算出当移动量大于1时才改变left属性
mxmx=mx+x;
var m=Math.floor(mx);
if(m<0){
m++;
}
if(m>=1 || m<=-1){
img.style.left=(parseInt(img.style.left)+m)+"px";
mxmx=mx-m;
}
//由于网页上top属性改变量小于1的时候,按1改变,所以计算出当移动量大于1时才改变top属性
mymy=my+y;
var n=Math.floor(my);
if(n<0){
n++;
}
if(n>=1 || n<=-1){
img.style.top=(parseInt(img.style.top)+n)+"px";
mymy=my-n;
}
//当移动到指定位置时停止移动
var xflag=false;
var yflag=false;
if(x>=0){
if(parseInt(img.style.left)>=endX){
xflag=true;
}
}else{
if(parseInt(img.style.left)<=endX){
xflag=true;
}
}
if(y>=0){
if(parseInt(img.style.top)>=endY){
yflag=true;
}
}else{
if(parseInt(img.style.top)<=endY){
yflag=true;
}
}
if(xflag && yflag){
window.clearInterval(moveObj);
moveObj=null;
}
}
</script>
http://blog.csdn.net/lip009/archive/2007/11/15/1887357.aspx
相关文章推荐
- 让图片直线移动到鼠标点击位置,类似游戏里的人物走动!
- 鼠标移动到一个位置,显示图片(类似qq的隐藏显示功能)
- Unity3D游戏场景之鼠标点击地面控制人物移动
- 【Unity 3D学习】鼠标点击控制人物移动到目标位置
- 用NavMesh实现人物移动到鼠标点击的位置
- NGUI 点击屏幕时在该点创建图片并跟随鼠标移动
- XNA实践鼠标篇--根据点击坐标移动图片(四)下
- Javascript实现图片位置控制(鼠标拖拽 + 键盘方向键移动)源码分享
- unity3d]鼠标点击地面人物自动走动(也包含按键wasd&space控制)
- Unity中物体如何移动到鼠标点击位置
- 鼠标点击图片后移动事件
- winform 鼠标拖动移动图片位置
- 艾伟_转载:在WPF里面实现以鼠标位置为中心缩放移动图片
- 图片跟随鼠标移动(期间鼠标不释放)以及释放鼠标(图片)时刻鼠标位置
- 鼠标移动到图片出现按钮,点击删除图片
- 鼠标移动到一个位置弹出相应的一张图片
- Unity3d鼠标点击屏幕来控制人物的走动
- 使用C#模拟键盘输入、鼠标移动和点击、设置光标位置及控制应用程序的显示
- JS原生代码实现鼠标移动图片随之移动效果(另加点击改变图片效果)
- JS图像映射的应用,在一个图片点击或移动到不同位置有不同响应