以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 SVG/GML/VRML/X3D/XAML 』  (http://bbs.xml.org.cn/list.asp?boardid=21)
----  关于鼠标放在rect上触发的事件,总在闪动,请教  (http://bbs.xml.org.cn/dispbbs.asp?boardid=21&rootid=&id=42231)


--  作者:pdadn
--  发布时间:1/12/2007 3:08:00 PM

--  关于鼠标放在rect上触发的事件,总在闪动,请教
我在用svg画图的时间,希望鼠标在rect上时,就显示一个信息,鼠标移开,就把显示的信息摸掉,但是,发现,不行,鼠标点在rect上的时,显示的信息不停的闪动。
大家有什么好的方法,实现鼠标放在RECT上时,显示一个信息,并且信息显示不闪?
rect.setAttribute("onmouseout","cancelShowSysDetailInfo(evt)");

function cancelShowSysDetailInfo(evt){
  clearData("info");
 }
 
 function clearData(obj){
 var gg=dlist_svgDocument.getElementById(obj);
 var ind=gg.childNodes.length;
 while(gg.hasChildNodes)
        {
           gg.removeChild(gg.firstChild);
        }
   } 
这个是移开的代码,

rect.setAttribute("onmousemove","showSysDetailInfo(evt)");

function showSysDetailInfo(evt){
  
  var node = evt.getTarget();
        var id = node.getAttribute("id");
        
        var Xcoordinate =evt.getClientX();
        var Ycoordinate =evt.getClientY()-15;
        var rectwidth=200;
        var rectheight=50;
        createRect(Xcoordinate,Ycoordinate,rectwidth,rectheight,id);

 }
 
 //paint info rect
 function createRect(x,y,width,height,infostr){
   var displayDiv=dlist_svgDocument.createElement("rect");
   var ginfo=dlist_svgDocument.getElementById("info");
   displayDiv.setAttribute("x",x);
   displayDiv.setAttribute("y",y);
   displayDiv.setAttribute("width",width);
   displayDiv.setAttribute("height",height); 
   displayDiv.setAttribute("stroke","#81CEED");
   displayDiv.setAttribute("stroke-width","1");
   displayDiv.setAttribute("fill","none");
   displayDiv.setAttribute("id","rect_"+infostr); 
   ginfo.appendChild(displayDiv);
   var did=infostr.split(",")[2];
   var dip=infostr.split(",")[3];
   var dname=infostr.split(",")[4];
   var status=infostr.split(",")[1];
   paintText2(x,y,status,did,dip,dname,"info");
 }
 
 function paintText2(x,y,status,did,dip,dname,ginfo){
   var gginfo=dlist_svgDocument.getElementById(ginfo);
  if(status==0){
   var x1=Number(x)+10;
   var y1=Number(y)+10;
   infoCreateText(x1,y1,"设备名:",gginfo);
   
  }else{
   var x1=Number(x)+10;
   var y1=Number(y)+10;
   infoCreateText(x1,y1,"设备名:",gginfo);
  }
 }
这个是鼠标放在rect上的代码


--  作者:upc2neiep
--  发布时间:1/13/2007 8:47:00 PM

--  
onmousemove 应该判断信息框是否存在,存在的情况下修改属性
不知道是不是效果好些
纯粹判断
--  作者:tamefox
--  发布时间:1/14/2007 9:22:00 AM

--  
不用onmousemove事件,用onmouseover事件就好了~
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms