关于JS 斜线移动问题,本人尝试自己写一个类似游戏 人物移动的效果 但是走斜线的时候会有问题 不知道有什么算法还是怎么!我写的会乱跳动!
请不要发别人的例子 我自己下了很多但是很多不明白什么gril,神魔对决3那些 就不要发了!发了也没分!
说下思路和算法说明!做好有简单思路清晰的例子!
也可以发我QQ邮箱
QQ:7527460
我自己的代码如下!
如下
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<style type="text/css">
</style>
<title>JavaScript Motion Sample</title> <script language="JavaScript">
var movingID = null;
var scrolling = false;
var mx,my;
var ss=true;
function xy()
{
ss=false;
mx=event.clientX;//获得鼠标坐标,并记录当前坐标给变量
my=event.clientY+25;//获得鼠标坐标,并记录当前坐标给变量,以便后面计算
}
function startMove()
{
if(ss)
{
xy();
}
var left = eval(div1.style.left.replace("px", ""));
var top = eval(div1.style.top.replace("px", ""));
var dis= Math.sqrt(mx*mx+my*my);距离
var times=dis/50;时间
if(times>0)
{
if(left==mx&&top>my)
{
div1.style.top=top-my/times;
}
if(left==mx&&top<my)
{
div1.style.top=top+my/times;
}
if(top==my&&left>mx)
{
div1.style.left=left-mx/times;
}
if(top==my&&left<mx)
{
div1.style.left=left+mx/times;
}
if(left>mx&&top>my)
{
div1.style.left=left-mx/times;
div1.style.top=top-my/times;
}
if(left<mx&&top>my)
{
div1.style.left=left+mx/times;
div1.style.top=top-my/times;
}
if(left<mx&&top<my)
{
div1.style.left=left+mx/times;
div1.style.top=top+my/times;
}
if(left>mx&&top<my)
{
div1.style.left=left-mx/times;
div1.style.top=top+my/times;
}
if(left==mx||top==my)
{
stopMove();
}
}
movingID = setTimeout("startMove()", 100);
} function stopMove()
{
clearTimeout(movingID);
}
function up()
{
xy();
}
function onload()
{
div1.style.left = 0;
div1.style.top=0;
}
function mmove()
{
document.getElementById("lb1").innerText=event.clientX+","+event.clientY
}
</script> </head>
<body onload="onload()" style="margin:0px;">
<div style="width:800px; height:500px; background-color:#FFFFCC" onmousedown="startMove()" onmouseup="up()" onmousemove="mmove()">
<div id="div1" style="position:absolute; width: 24px; height:24px; background-color:#0033FF"></div>
<label id="lb1">10,10</label>
</div>
</body>
</html>
请不要发别人的例子 我自己下了很多但是很多不明白什么gril,神魔对决3那些 就不要发了!发了也没分!
说下思路和算法说明!做好有简单思路清晰的例子!
也可以发我QQ邮箱
QQ:7527460
我自己的代码如下!
如下
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<style type="text/css">
</style>
<title>JavaScript Motion Sample</title> <script language="JavaScript">
var movingID = null;
var scrolling = false;
var mx,my;
var ss=true;
function xy()
{
ss=false;
mx=event.clientX;//获得鼠标坐标,并记录当前坐标给变量
my=event.clientY+25;//获得鼠标坐标,并记录当前坐标给变量,以便后面计算
}
function startMove()
{
if(ss)
{
xy();
}
var left = eval(div1.style.left.replace("px", ""));
var top = eval(div1.style.top.replace("px", ""));
var dis= Math.sqrt(mx*mx+my*my);距离
var times=dis/50;时间
if(times>0)
{
if(left==mx&&top>my)
{
div1.style.top=top-my/times;
}
if(left==mx&&top<my)
{
div1.style.top=top+my/times;
}
if(top==my&&left>mx)
{
div1.style.left=left-mx/times;
}
if(top==my&&left<mx)
{
div1.style.left=left+mx/times;
}
if(left>mx&&top>my)
{
div1.style.left=left-mx/times;
div1.style.top=top-my/times;
}
if(left<mx&&top>my)
{
div1.style.left=left+mx/times;
div1.style.top=top-my/times;
}
if(left<mx&&top<my)
{
div1.style.left=left+mx/times;
div1.style.top=top+my/times;
}
if(left>mx&&top<my)
{
div1.style.left=left-mx/times;
div1.style.top=top+my/times;
}
if(left==mx||top==my)
{
stopMove();
}
}
movingID = setTimeout("startMove()", 100);
} function stopMove()
{
clearTimeout(movingID);
}
function up()
{
xy();
}
function onload()
{
div1.style.left = 0;
div1.style.top=0;
}
function mmove()
{
document.getElementById("lb1").innerText=event.clientX+","+event.clientY
}
</script> </head>
<body onload="onload()" style="margin:0px;">
<div style="width:800px; height:500px; background-color:#FFFFCC" onmousedown="startMove()" onmouseup="up()" onmousemove="mmove()">
<div id="div1" style="position:absolute; width: 24px; height:24px; background-color:#0033FF"></div>
<label id="lb1">10,10</label>
</div>
</body>
</html>
解决方案 »
- 求jquery form.js提交表单的最简单用法
- 求学,帮我看看出了什么问题?
- 如果数据库字段长10位,在页面怎么用JS控制长度让输入中文和字母时的长度能控制,不会让数据库出错
- 如何禁用IE浏览器的关闭功能
- submit提交后不刷新当前页面
- Js实现的滚动:本来两个页面能够滚动,我加了一个就不能滚动了,我的Move1,Move2该怎么修改?
- 有关Word.Application的问题
- 我的系统性实现这样的功能:在Jsp页面里,有一个文本框,当在文本框里输入信息后,系统自动将该信息的属性从数据库里提取出来,并显示在J
- 很奇怪的问题,希望高手指点!!!
- window.onload 方法为什么不执行?
- 一段小正则的疑问
- JavaScript中对象Array中的reverse是怎么实现的呀?我的写这个函数怎么不行呀
斜线移动,无非是同时改变 top、left的值
function go_pp(){
pp.style.top=parseInt(pp.style.top)+1;
pp.style.left=parseInt(pp.style.left)+1]);}
setInterval("go_pp()",1);
这样刚好可以按45°角动态移动