以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 SVG/GML/VRML/X3D/XAML 』  (http://bbs.xml.org.cn/list.asp?boardid=21)
----  请问高手,怎么样将SVG文件中的polyline对象移动啊  (http://bbs.xml.org.cn/dispbbs.asp?boardid=21&rootid=&id=20489)


--  作者:guoliping007
--  发布时间:7/19/2005 11:08:00 AM

--  请问高手,怎么样将SVG文件中的polyline对象移动啊
有这样一个需求,就是要将SVG文件中的过程线通过鼠标或键盘的方向键来左右上下移动
这怎么实现呀,我连移动都不会呀
有思路的也行,先谢谢了!
--  作者:turta
--  发布时间:7/19/2005 4:38:00 PM

--  
在svg对象的onmuosemove事件中添加捕获鼠标在屏幕中的实时点,可以通过计算新旧两个点的差值可以动态的设置新的polyline对象的x和y的值就可以让它移动了啊!!
--  作者:guoliping007
--  发布时间:7/20/2005 12:10:00 AM

--  
怎么样通过键盘的方向键移动呢
--  作者:jgame
--  发布时间:7/28/2005 3:22:00 PM

--  
捕获鼠标在屏幕中的实时点,或文字块 这个怎么写啊,,,help..........


--  作者:zb9030@126.com
--  发布时间:8/8/2005 10:21:00 AM

--  
我觉得,移动polyline对象,并不一定需要改变它的path值,可以把它当作一个整体,改变transform的值就行了,polyline对象的path的不会改变.

个人见解


--  作者:mxr
--  发布时间:10/1/2005 4:48:00 PM

--  
<?xml version="1.0"?>
<svg>
<script><![CDATA[
  function changeScale(k)
   {
       parent.root=svgDocument.documentElement;
       var old_scale=parent.root.currentScale;
       new_scale=old_scale*k;
       parent.root.currentScale=new_scale;
    }
   function choose(evt)
    {
  switch(parent.currentTool)
    {
            case 0: changeScale(2);break;
            case 1: changeScale(0.5);break;
     }
      }
    function MouseDown(evt)
  {
     parent.dragger=svgDocument.documentElement;
     parent.origX=evt.getClientX();
           parent.origY=evt.getClientY();
     parent.dx=parent.dragger.currentTranslate.x;
     parent.dy=parent.dragger.currentTranslate.y;
   }
 function MouseUp(evt)
  {
  if( parent.dragger != null )
   {
   parent.dragger = null;
   parent.origX=0;
   parent.origY=0;
    parent.dx = 0;
    parent.dy = 0;
   }
  }
 function MouseMove(evt)
  {
  if(parent.currentTool == 2)
    {
   if( parent.dragger != null )
   {
     var newX = parent.dx+(evt.getClientX() - parent.origX);
     var newY = parent.dy+(evt.getClientY() - parent.origY);
     parent.dragger.currentTranslate.x=newX;
              parent.dragger.currentTranslate.y=newY;
    }
      }
  }
]]></script>
<g onclick="choose(evt)" onmousedown="MouseDown(evt)" onmousemove="MouseMove(evt)" onmouseup="MouseUp(evt)">
  <rect x="0" y="0" width="200" height="200" style="fill:green;opacity:0.3;visibility:visible"/>
  <text x="15" y="25" id="Text" style="font-size:10">transform</text>
</g>
</svg>

--  作者:mxr
--  发布时间:10/1/2005 4:50:00 PM

--  
<?xml version="1.0"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
 "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg>
<script><![CDATA[
function chooseTool(evt)
{
      var key=evt.getTarget().getAttribute("id");
   switch(key)
    {
           case "note1": parent.currentTool=0;break;
           case "note2": parent.currentTool=1;break;
           case "note3": parent.currentTool=2;break;
        }
}
]]></script>
<text x="10" y="15" style="font-size:15">Zoom +<tspan dx="10" x="61" y="15">-</tspan></text>
<rect id="note1" onclick="chooseTool(evt)" x="45" y="2" width="15" height="15" style="fill:rgb(255,0,0);opacity:0.2"/>
<rect id="note2" onclick="chooseTool(evt)" x="65" y="2" width="15" height="15" style="fill:rgb(0,0,255);opacity:0.2"/>
<text x="10" y="35" style="font-size:15">Pan *</text>
<rect id="note3" onclick="chooseTool(evt)" x="35" y="22" width="15" height="15" style="fill:rgb(255,0,255);opacity:0.2"/>
</svg>
--  作者:mxr
--  发布时间:10/1/2005 4:50:00 PM

--  
<html>
<body>
<script type="text/javascript">
    var currentTool;
    var dragger;
 var dx;
 var dy;
 var origX;
 var origY;
 var root = null;
</script>
<p>
<embed name="carve2" width="500" height="500" src="no1.svg">
<embed name="carve1" width="600" height="600" src="no2.svg">
</p>
</body>
</html>

W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
62.988ms