问题是这样的:我做的是一个关于人员活动轨迹的功能,表示出人员A某段时间段的活动轨迹,所以叫要从数据库中提取人员A的活动坐标和到达该坐标的时间,在页面上我用一张Image图片来表示人员A,根据从数据库中提取的数据中时间的先后,来按坐标移动图片Image,当然,从数据库中提取的坐标点一般都是两个或两个以上,移动的效果net_lover(【孟子E章】) 已经给我解决了,但是却达不到最终的效果,我自己也研究过了,但是还是没有解决。我昨天发的帖子:
http://community.csdn.net/Expert/topic/5326/5326613.xml?temp=.5063288
net_lover(【孟子E章】) 给我的代码:
<body onload= "mv() ">
<img src= "http://dotnet.aspx.cc/Images/logoSite.gif " id=mxh style= "position:absolute ">
<script>
m = 100,n=100,t=null
function mv()
{
oImg = document.getElementById( "mxh ")
oImg.style.top =m+ "px "
oImg.style.left =n+ "px "
m++
n+=3
t = window.setTimeout( "mv() ",10)
if(m> 300)
{
window.clearTimeout(t)
}
}
</script>
</body>
这个代码是让图片从一个固定的起始点,按照规定了的步长移动到规定好了的坐标,但是我从数据库提取的点是没有规律的,我不可能每次提取数据库中的坐标点都要考虑步长,我希望能有高手给我提供一段不用考虑步长,只要提供两个坐标点,图片就会以直线距离移动的代码,我考虑了很久都没有办法,希望有高手救救我,在线等~~~,如果问题有什么不清楚的,大家尽管问,谢谢。。。
------解决方案--------------------------------------------------------
<head>
<script>
var posionpoint= "0:0;50:50;50:0;200:50;300:40;10:0 ";
var points=posionpoint.split( "; ");;
var t=null;
var t1=null;
var count=500;
var timeindex=10;
var start=1;
var end=points.length;
function getPath()
{
oImg = document.getElementById( "mxh ");
oImg.style.left = "0px ";
oImg.style.top = "0px ";
setmv();
}
function setmv()
{
if(start==end)
{
start=0;
return ;
}
oImg = document.getElementById( "mxh ");
var XY=points[start].split( ": ");
var oldP=points[start-1].split( ": ");
var x=(eval(XY[0])-eval(oldP[0]))/count;
var y =(eval(XY[1])-eval(oldP[1]))/count
mv(oldP[0],oldP[1],x,y)
}
function mv(x,y,s1,s2)
{
oImg = document.getElementById( "mxh ");
var m=eval(x) + eval(s1);
var n=eval(y) + eval(s2);
oImg.style.left =m + "px "
oImg.style.top =n + "px "
count=count-1;
t = window.setTimeout( "mv( " + m + ", " + n + ", " + s1 + ", " + s2 + ") ",timeindex)
if(count==1)
{
count=500;
window.clearTimeout(t)
start=start+1;
setmv();
}
}
function getValue(e)
{
return eval(e.replace( "px ", " "));
}
</script>
</head>
<body onload= "getPath() ">
<img src= "http://dotnet.aspx.cc/Images/logoSite.gif " id=mxh style= "position:absolute ">
</body>
点算得可能不够精确,你看看吧
------解决方案--------------------------------------------------------
取数据库内容
SqlDataReader dr...
string arr = " ";
while(dr.Read())
{
arr += " ' " + dr[ "x "].ToString() + ", " + dr[ "y "].ToString() + " ', ";
}
if(arr!= " ")
{
arr = arr.Substring(arr,arr.Length-1);
}
Literal1.Text=arr;
var poly = new Array( <asp:Literal ID= "Literal1 " runat= "server "> </asp:Literal> )