帮忙看下下面的程序,我的想法是,鼠标先点击平移,使toolType=3,然后在地图上单击鼠标(不松开),然后拖动鼠标到A点(假设),然后将原来地图的中心也进行同样的平移,得到新的地图中心,后台处理返回一张新的图片(以新的地图中心为中心的图片)。
问题:当进行平移时,鼠标拖动后,再松开鼠标监听不到松开鼠标事件,而是再点击一下鼠标,才进行平移(平移量是以再点一下鼠标的位置进行计算的),直接单击鼠标接着松开能监听到鼠标松开事件。
<head>
<script language="javascript">
var ssx;
var ssy;
var firx; //这是定义的鼠标点击时此点的坐标
var firy; //这是定义的鼠标点击时此点的坐标
var ptx;
var pty;
var lockmouse=false;
var toolType = 0;
window.onload=function()
{
var obj = document.getElementById("imgmap");//找到对象
obj.onmousedown=function(e) //设置鼠标点下的监听事件
{
lockmouse=true;
oEvent=e||event; //如果e为null,则oEvent=event,否则oEvent=e
//这样写是为了兼容各大浏览器,所有事件类的函数都要写
obj.mouseStart={};
obj.mouseStart.x=oEvent.clientX;
obj.mouseStart.y=oEvent.clientY;
firx=obj.mouseStart.x-10;
firy=obj.mouseStart.y-10;
}
obj.onmousemove=function(e) // 这是监听鼠标移动
{
oEvent=e||event; //如果e为null,则oEvent=event,否则oEvent=e
var endx=oEvent.clientX-10;
var endy=oEvent.clientY-10;
if(lockmouse==true)
{
if(toolType == 1 || toolType == 2)
{
}
else if(toolType==3)
{
var dxMove;
var dyMove;
dxMove = endx - firx;
dyMove = endy - firy;
// document.all.imgmap.src="maptest?toolType=3" + "&dxMove=" + dxMove + "&dyMove=" + dyMove;
}
}
}
obj.onmouseup=function(e)
{
oEvent=e||event;
var endx = oEvent.clientX - 10;
var endy = oEvent.clientY - 10;
if(lockmouse==true)
{
}
if(toolType==1)
{
document.all.imgmap.src="maptest?toolType=1" + "&ptx=" + firx + "&pty=" + firy;
}
if(toolType==2)
{
document.all.imgmap.src="maptest?toolType=2" + "&ptx=" + firx + "&pty=" + firy;
}
if(toolType == 3)
{
var dxMove=0.0,dyMove=0.0;
var centerX=0,centerY=0;
centerX = 410; //现在的这个图片的中心
centerY = 265;
dxMove = endx - firx;
dyMove = endy - firy;
centerX =centerX - dxMove;
centerY =centerY - dyMove;
var ssxx;
var ssyy;
ssxx =centerX - dxMove;
ssyy =centerY - dyMove;
document.all.imgmap.src="maptest?toolType=3" + "&ptx=" + ssxx + "&pty=" + ssyy;
}
}
lockmouse=false;
}
}function SetZoomIn()
{
toolType = 1;
}
function SetZoomOut()
{
toolType = 2;
}
function SetPan()
{
toolType = 3;
}
</script>
</head>
<body>
<div id="imp" style="width:800px; height:500px; border:1px solid #000; overflow:hidden;">
<img id="imgmap" src="maptest" >
</div>
<div>
<INPUT TYPE="button" VALUE="放大" onclick="SetZoomIn()">
<INPUT TYPE="button" VALUE="缩小" onclick="SetZoomOut()">
<INPUT TYPE="button" VALUE="平移" onclick="SetPan()">
</div>
</body>
再就是我怎么感觉鼠标拖动函数(onmousemove)好像没有用到啊,我也是刚开始学,看了网上一些例子弄的,希望大家能给解答下,其中不合理的地方也希望大家给指正,谢谢
问题:当进行平移时,鼠标拖动后,再松开鼠标监听不到松开鼠标事件,而是再点击一下鼠标,才进行平移(平移量是以再点一下鼠标的位置进行计算的),直接单击鼠标接着松开能监听到鼠标松开事件。
<head>
<script language="javascript">
var ssx;
var ssy;
var firx; //这是定义的鼠标点击时此点的坐标
var firy; //这是定义的鼠标点击时此点的坐标
var ptx;
var pty;
var lockmouse=false;
var toolType = 0;
window.onload=function()
{
var obj = document.getElementById("imgmap");//找到对象
obj.onmousedown=function(e) //设置鼠标点下的监听事件
{
lockmouse=true;
oEvent=e||event; //如果e为null,则oEvent=event,否则oEvent=e
//这样写是为了兼容各大浏览器,所有事件类的函数都要写
obj.mouseStart={};
obj.mouseStart.x=oEvent.clientX;
obj.mouseStart.y=oEvent.clientY;
firx=obj.mouseStart.x-10;
firy=obj.mouseStart.y-10;
}
obj.onmousemove=function(e) // 这是监听鼠标移动
{
oEvent=e||event; //如果e为null,则oEvent=event,否则oEvent=e
var endx=oEvent.clientX-10;
var endy=oEvent.clientY-10;
if(lockmouse==true)
{
if(toolType == 1 || toolType == 2)
{
}
else if(toolType==3)
{
var dxMove;
var dyMove;
dxMove = endx - firx;
dyMove = endy - firy;
// document.all.imgmap.src="maptest?toolType=3" + "&dxMove=" + dxMove + "&dyMove=" + dyMove;
}
}
}
obj.onmouseup=function(e)
{
oEvent=e||event;
var endx = oEvent.clientX - 10;
var endy = oEvent.clientY - 10;
if(lockmouse==true)
{
}
if(toolType==1)
{
document.all.imgmap.src="maptest?toolType=1" + "&ptx=" + firx + "&pty=" + firy;
}
if(toolType==2)
{
document.all.imgmap.src="maptest?toolType=2" + "&ptx=" + firx + "&pty=" + firy;
}
if(toolType == 3)
{
var dxMove=0.0,dyMove=0.0;
var centerX=0,centerY=0;
centerX = 410; //现在的这个图片的中心
centerY = 265;
dxMove = endx - firx;
dyMove = endy - firy;
centerX =centerX - dxMove;
centerY =centerY - dyMove;
var ssxx;
var ssyy;
ssxx =centerX - dxMove;
ssyy =centerY - dyMove;
document.all.imgmap.src="maptest?toolType=3" + "&ptx=" + ssxx + "&pty=" + ssyy;
}
}
lockmouse=false;
}
}function SetZoomIn()
{
toolType = 1;
}
function SetZoomOut()
{
toolType = 2;
}
function SetPan()
{
toolType = 3;
}
</script>
</head>
<body>
<div id="imp" style="width:800px; height:500px; border:1px solid #000; overflow:hidden;">
<img id="imgmap" src="maptest" >
</div>
<div>
<INPUT TYPE="button" VALUE="放大" onclick="SetZoomIn()">
<INPUT TYPE="button" VALUE="缩小" onclick="SetZoomOut()">
<INPUT TYPE="button" VALUE="平移" onclick="SetPan()">
</div>
</body>
再就是我怎么感觉鼠标拖动函数(onmousemove)好像没有用到啊,我也是刚开始学,看了网上一些例子弄的,希望大家能给解答下,其中不合理的地方也希望大家给指正,谢谢
function ss(){
alert("move");
}
function bb(){
alert("out");
}
</script>
<input type="button" onmousemove="ss()" onmouseout="bb()"/>