让图片直线移动到鼠标点击位置,类似游戏里的人物走动!
来源:互联网 发布:软件人员外包 编辑:程序博客网 时间:2024/04/28 01:02
<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 event=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 speedNum=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属性
mx=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";
mx=mx-m;
}
//由于网页上top属性改变量小于1的时候,按1改变,所以计算出当移动量大于1时才改变top属性
my=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";
my=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>
<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 event=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 speedNum=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属性
mx=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";
mx=mx-m;
}
//由于网页上top属性改变量小于1的时候,按1改变,所以计算出当移动量大于1时才改变top属性
my=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";
my=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>
- 让图片直线移动到鼠标点击位置,类似游戏里的人物走动!
- 让图片直线移动到鼠标点击位置,类似游戏里的人物走动!
- [Unity3D]Unity3D游戏开发之史上最简单的鼠标点击控制人物走动实现
- Unity3D游戏开发之史上最简单的鼠标点击控制人物走动实现
- Unity3D游戏开发之史上最简单的鼠标点击控制人物走动实现
- 【Unity3D自学记录】简单的鼠标点击控制人物走动
- Unity3d鼠标点击屏幕来控制人物的走动
- 鼠标移动到一个位置,显示图片(类似qq的隐藏显示功能)
- 【Unity 3D学习】鼠标点击控制人物移动到目标位置
- 游戏人物跟随鼠标移动的实现
- 把小人移动到鼠标点击的位置
- Unity3D游戏场景之鼠标点击地面控制人物移动
- Unity移动物体到鼠标点击位置
- 鼠标点击物体移动到该位置
- 游戏开发之--简单的人物走动和地图移动(一)
- 点击 鼠标 图片跟着鼠标的位置
- 我的Unity(1)一点一滴 鼠标点击任意位置,物体移动到该位置。
- 【VC++游戏开发#十】2D篇 —— 人工智能(一):滚动地图 & 用鼠标控制人物的走动
- 狗这一辈子
- 谈谈Cookie存取和IE页面缓存的问题
- 键盘进水
- 【吐口水运动】
- Apache - 相关软件 - 10-Strike.Log-Analyzer.v1.5
- 让图片直线移动到鼠标点击位置,类似游戏里的人物走动!
- 33条C#、.Net经典面试题目及答案
- MATLAB如何从GUI中返回参数
- 中标普华成长备忘录[2007@版]lsosa.CS2C
- CUploadFile类和CUploadFiles类
- MATLAB GUI中利用定时器制作动画
- 流浪者之梦
- Ansys中划分的网格导入MATLAB
- Apache - 模块 - mod_rewrite - RewriteCond - 以域名为重写条件