以文本方式查看主题 - 计算机科学论坛 (http://bbs.xml.org.cn/index.asp) -- 『 SVG/GML/VRML/X3D/XAML 』 (http://bbs.xml.org.cn/list.asp?boardid=21) ---- svg画直线怎么总是出错? (http://bbs.xml.org.cn/dispbbs.asp?boardid=21&rootid=&id=37916) |
-- 作者:zw1213 -- 发布时间:9/14/2006 1:48:00 PM -- svg画直线怎么总是出错? //画直线 function drawArrow() { arrow=svgDoc.createElement("line"); arrow.setAttribute("x1",x); arrow.setAttribute("y1",y); arrow.setAttribute("stroke","blue"); arrow.setAttribute("stroke-width",3); } //鼠标onmousemove 事件 function moveArrow(evt) { if(shape=="arrow") { x1=evt.clientX; y1=evt.clientY; arrow.setAttribute("x2",x1); arrow.setAttribute("y2",y1); drawing.appendChild(arrow); } } //onmouseup事件 function endDrawing() { shape=""; } 鼠标抬起的话,也不停止画,第二次画的时候开始坐标就和前一次结束的位置一样 请大家帮忙看一下,怎么回事。 |
-- 作者:daidaixiong -- 发布时间:9/14/2006 5:16:00 PM -- 你把完整代码发一下吧,包括mousedown的函数,看看可不可以找到毛病。 |
-- 作者:tamefox -- 发布时间:9/15/2006 9:08:00 AM -- <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-flat-20030114.dtd"> <svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%"> <desc> <!-- put a description here --> </desc> <script type="text/javascript"><![CDATA[ var x,y,arrow,shape; function drawArrow(evt){ var drawing=document.getElementById('drawing'); if(evt.detail==2){ document.getElementById("bg").setAttribute("visibility","hidden"); return; } x=evt.screenX; y=evt.screenY; if(shape=="arrow"){ arrow.setAttribute("x2",x); arrow.setAttribute("y2",y); } arrow=document.createElement("line"); arrow.setAttribute("x1",x); arrow.setAttribute("y1",y); arrow.setAttribute("x2",evt.screenX); arrow.setAttribute("y2",evt.screenY); arrow.setAttribute("stroke","blue"); arrow.setAttribute("stroke-width",1); drawing.appendChild(arrow); shape="arrow"; } function moveArrow(evt) { if(shape=="arrow") { x=evt.clientX; y=evt.clientY; arrow.setAttribute("x2",x); arrow.setAttribute("y2",y); } } ]]></script> <g id="drawing"> </g> <rect id="bg" width="100%" height="100%" fill="none" pointer-events="visible" onclick="drawArrow(evt)" onmousemove="moveArrow(evt)"/> </svg> |
-- 作者:daidaixiong -- 发布时间:9/15/2006 2:00:00 PM -- 呵呵,怎么发的人换了。如果代码是一样的话,我做了如下改动 <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-flat-20030114.dtd"> <svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%"> <desc> <!-- put a description here --> </desc> <script type="text/javascript"><![CDATA[ var x,y,arrow,shape; function drawArrow(evt){ var drawing=document.getElementById('drawing'); if(evt.detail==2){ document.getElementById("bg").setAttribute("visibility","hidden"); return; } x=evt.screenX; y=evt.screenY; if(shape=="arrow"){ arrow.setAttribute("x2",x); arrow.setAttribute("y2",y); } arrow=document.createElement("line"); arrow.setAttribute("x1",x); arrow.setAttribute("y1",y); arrow.setAttribute("x2",evt.screenX); arrow.setAttribute("y2",evt.screenY); arrow.setAttribute("stroke","blue"); arrow.setAttribute("stroke-width",1); drawing.appendChild(arrow); shape="arrow"; } function moveArrow(evt) { if(shape=="arrow") { x=evt.clientX; y=evt.clientY; arrow.setAttribute("x2",x); arrow.setAttribute("y2",y); } } function mouseup() { shape=""; } ]]></script> <g id="drawing"> </g> <rect id="bg" width="100%" height="100%" fill="none" pointer-events="visible" onmousedown="drawArrow(evt)" onmousemove="moveArrow(evt)" onmouseup="mouseup()"/> </svg> 如果原来确实是onclick="drawArrow(evt)",那么改成onmousedown="drawArrow(evt)",因为事件响应的顺序总是先有mousedown,然后才有mouseup,如果将mousedown换成click,来设定初始坐标的话,当执行mousemove以后,就不会响应mouseup事件了。 |
-- 作者:zw1213 -- 发布时间:9/15/2006 2:55:00 PM -- 我的mouseup不响应。 画的时候是用的onmousedown不是click,但mouseup不起作用 不知道是怎么回事? [此贴子已经被作者于2006-9-17 11:05:44编辑过]
|
-- 作者:daidaixiong -- 发布时间:9/18/2006 8:52:00 AM -- 要不你还是发一段你比较 完整的代码吧,凭空想象不出来啊 |
-- 作者:zw1213 -- 发布时间:9/19/2006 4:28:00 PM -- 谢谢。问题已经解决了。 我的onmouseup放在<g>里就可以 放到<rect>里就不行。不知道是怎么回事 |
-- 作者:ncepuyuyu -- 发布时间:9/21/2006 5:35:00 PM -- 因为你的rect的一个属性被设成这个了fill="none" 你把fill随便设成别的,别为空,肯定就行了 |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
78.125ms |