<img src="Water lilies.jpg" usemap="#map_sample" border="0" alt="sample">
<map name="map_sample">
<area shape="circle" coords="156,164,5" href="#" alt="円">
<area shape="circle" coords="200,85,5" href="#" alt="円">
<area shape="poly" coords="156,109 173,154 211,146 217,120 181,99" href="#" alt="多角形">
</map>
<textarea rows=5 cols=10 id=tt1></textarea>
<script>
var x1=156,y1=164;//A
var x2=200,y2=85;//B
var b=[[156,109],[173,154],[211,146],[217,120],[181,99]];
var mx=0,my=0;//move point step
function move(){
if(x1+mx>x2)clearInterval(timer);
mx++;//偏移量x
my=(y2-y1)*mx/(x2-x1);//偏移量y
document.getElementById("tt1").value=my
// 起点y + 相対偏移量x * 斜率 <=移動点y
if(Math.abs(b[0][1] + (x1+mx-b[0][0])*(b[0][1]-b[1][1])/(b[0][0]-b[1][0]))>=y1+my){
alert((mx+x1)+":"+(my+y1));
clearInterval(timer);
}
}
var timer=setInterval(move,10);
</script>请您帮个忙。
帮人帮到底。送佛送到西。
以后我会记得你的大恩大德的。把它改变成一个函数。传三个值进去。(一个是MAP的ID(用JS直接得到该ID的area坐标)。别外两个是AB点坐标。)
就可以返回点碰到这个图的坐标。没有碰到。者返回FALSH。
并且里面把点的反方向也考虑进去。也就是AB的位置考虑进去。以我的JS水平。无法写出来啊。
跪求帮忙。以后忘不了你。
<map name="map_sample">
<area shape="circle" coords="156,164,5" href="#" alt="円">
<area shape="circle" coords="200,85,5" href="#" alt="円">
<area shape="poly" coords="156,109 173,154 211,146 217,120 181,99" href="#" alt="多角形">
</map>
<textarea rows=5 cols=10 id=tt1></textarea>
<script>
var x1=156,y1=164;//A
var x2=200,y2=85;//B
var b=[[156,109],[173,154],[211,146],[217,120],[181,99]];
var mx=0,my=0;//move point step
function move(){
if(x1+mx>x2)clearInterval(timer);
mx++;//偏移量x
my=(y2-y1)*mx/(x2-x1);//偏移量y
document.getElementById("tt1").value=my
// 起点y + 相対偏移量x * 斜率 <=移動点y
if(Math.abs(b[0][1] + (x1+mx-b[0][0])*(b[0][1]-b[1][1])/(b[0][0]-b[1][0]))>=y1+my){
alert((mx+x1)+":"+(my+y1));
clearInterval(timer);
}
}
var timer=setInterval(move,10);
</script>请您帮个忙。
帮人帮到底。送佛送到西。
以后我会记得你的大恩大德的。把它改变成一个函数。传三个值进去。(一个是MAP的ID(用JS直接得到该ID的area坐标)。别外两个是AB点坐标。)
就可以返回点碰到这个图的坐标。没有碰到。者返回FALSH。
并且里面把点的反方向也考虑进去。也就是AB的位置考虑进去。以我的JS水平。无法写出来啊。
跪求帮忙。以后忘不了你。
解决方案 »
- JavaScript ajax可以调用hession吗
- 为什么在我以下代码中,图片在ie和firefox都可以改变,但是,systemName的取值却只能在IE下可以改变!
- js checkbox的问题
- 用JS如果得到<input type="text" name="yg[xm]" />
- onmouseover+setTimeout怪问题
- 问一个Backbone的JS问题
- javascript里面插入<%...%>
- 如何打开一个新的窗口,同时让这个新窗口的关闭按纽不好用呀?
- 国内几乎都用vbscript写asp源代码,可是我想学习用javascript写的,有没有?
- Extjs 4.2 rowEditing plugin buttons显示位置错误
- 怎么读取TD标签中的字?
- js showDialog 问题
<map name="map_sample">
<area shape="circle" coords="156,164,5" href="#" alt="円">
<area shape="circle" coords="200,85,5" href="#" alt="円">
<area shape="poly" coords="156,109 173,154 211,146 217,120 181,99" href="#" alt="多角形">
</map>
<textarea rows=5 cols=10 id=tt1></textarea>
<script>
var x1=156,y1=164;//A
var x2=200,y2=85;//B
var b=[[156,109],[173,154],[211,146],[217,120],[181,99]];
var mx=0,my=0;//move point step
var timer;
var f=1;
function move(){
if(x1+mx>f*x2){
clearInterval(timer);
return false;
}
mx++;//偏移量x
my=f*(y2-y1)*mx/(x2-x1);//偏移量y
document.getElementById("tt1").value=my
// 起点y + 相対偏移量x * 斜率 <=移動点y
if(f*Math.abs(b[0][1] + (x1+mx-b[0][0])*(b[0][1]-b[1][1])/(b[0][0]-b[1][0]))>=f*(y1+my)){
return((mx+x1)+":"+(my+y1));
clearInterval(timer);
}
}
function yourFunctionName(mapId,pointA,pointB){
x1=pointA[0],y1=pointA[1];
x2=pointB[0],y2=pointB[1];
f=y1>=y2?1:-1;
var mapP=document.getElementsByName(mapId)[0].childNodes[2].getAttribute("coords").split(",");
b=[];
for(var i=0;i<mapP.length/2;i++)b[b.length]=new Array(parseInt(mapP[i*2]),parseInt(mapP[i*2+1]));
timer=setInterval(move,10);
}
yourFunctionName("map_sample",[156,164],[200,85]);
</script>
AB点反方向的情况没测,我给你的例子,只考虑了AB线是先跟你的前两个点的连线交点的情况,而实际上的情况是有几条边就有几种情况,思路是这样:
1 判断a,b哪个在上
2 判断ab线是跟那两个点的先连线相交(设为L)
3 把a,b的一个点设成起动点(x1,y1),另一个设成终点(x2,y2)
4 判断起点在L的上还是下,在L下边,f为正,在L下边f为负。
5 然后动点慢慢加,应该可以得到结果好好考虑下,没有那个地方是难的,求两直线的交点初中大家都学过,这里拿到程序里来实现对你来说也不难
动动手,动动脑,祝你成功。
我是才来CSDN的BBS.
以前经常在CSDN下源码.
CSDN为国内程序做出了不少的贡献啊。