以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 SVG/GML/VRML/X3D/XAML 』  (http://bbs.xml.org.cn/list.asp?boardid=21)
----  如何编写自定义右键菜单,并且触发自定义事件!!!求助~~~  (http://bbs.xml.org.cn/dispbbs.asp?boardid=21&rootid=&id=34451)


--  作者:upc2neiep
--  发布时间:6/16/2006 8:35:00 AM

--  如何编写自定义右键菜单,并且触发自定义事件!!!求助~~~
我看了前面的几个例子,一些只能触发SVG本身的函数,根本不能触发自定义事件
比如下面的zoomin事件(本来是ZoomIn)
<?xml version="1.0" encoding="UTF-8"?>
<menu id="myCustomMenu">
 <header>Adobe SVG Viewer</header>
 <item action="zoomin" id="zoomin">zoom in </item>
 <item action="ZoomOut" id="ZoomOut">Zoom Out</item>
 <item action="OriginalView" id="OriginalView">Original View</item>
 <separator/>
 <item action="Quality" id="Quality">Higher Quality</item>
 <item action="Pause" id="Pause">Pause</item>
 <item action="Mute" id="Mute">Mute</item>
 <separator/>
 <item action="Find" id="Find">Find...</item>
 <item action="FindAgain" id="FindAgain">Find Again</item>
 <separator/>
 <item action="Copy" id="Copy">Copy Selected Text</item>
 <item action="CopySVG" id="CopySVG">Copy SVG</item>
 <item action="ViewSVG" id="ViewSVG">View SVG</item>
 <item action="ViewSource" id="ViewSource">View Source</item>
 <item action="SaveAs" id="SaveAs">Save SVG As...</item>
 <separator/>
 <item action="Help" id="Help">Help</item>
 <item action="About" id="About">About Adobe SVG Viewer...</item>
</menu>
再者右键菜单出现的时候,第一次总是出现系统菜单,以后出现的才是自定义菜单,怎么修改?以前看见一个说用“evt.preventDefault();”但是这样的话,菜单都不出现了
function popmenu(evt)
{
 if (evt.button==2)
 {
  //evt.preventDefault();
  getURL("menu.xml", menuLoaded);
 }
}

function menuLoaded(data)
{
 if(data.success)
 {
  var newMenuRoot=parseXML(data.content,contextMenu);
  contextMenu.replaceChild(newMenuRoot,contextMenu.getDocumentElement());
 }
}


--  作者:upc2neiep
--  发布时间:6/16/2006 8:51:00 AM

--  
还有如何通过滚轴实现自定义缩放,帮帮忙 谢谢了
好像不能捕捉滚轴一样
左键evt.button=0;
右键evt.button=2;
滚轴怎么也滚不出来 555555555555555


--  作者:tamefox
--  发布时间:6/24/2006 6:07:00 PM

--  
你要是在用的时候才动态添加,肯定是第一次出现系统右键菜单,第二次才出现你加载的菜单,唯一的办法就是在使用之前,该菜单已经载入内存,反正我是这么做的,至于滚轴,你可以看这里相关的帖子,mrx已经解决了,找她的帖子看看~
--  作者:tamefox
--  发布时间:6/26/2006 2:13:00 PM

--  
至于在使用之前,已经载入内存,意思是,例如将菜单的内容放到svg文件的defs元素中,这样加载svg文件时,就可以将菜单加入内存,这样你调用的时候,就会出现你定义的右键菜单。如下所示
...
<svg>
<defs>
<menu id="myCustomMenu">
<header>Adobe SVG Viewer</header>
<item action="zoomin" id="zoomin">zoom in </item>
<item action="ZoomOut" id="ZoomOut">Zoom Out</item>
<item action="OriginalView" id="OriginalView">Original View</item>
<separator/>
<item action="Quality" id="Quality">Higher Quality</item>
<item action="Pause" id="Pause">Pause</item>
<item action="Mute" id="Mute">Mute</item>
<separator/>
<item action="Find" id="Find">Find...</item>
<item action="FindAgain" id="FindAgain">Find Again</item>
<separator/>
<item action="Copy" id="Copy">Copy Selected Text</item>
<item action="CopySVG" id="CopySVG">Copy SVG</item>
<item action="ViewSVG" id="ViewSVG">View SVG</item>
<item action="ViewSource" id="ViewSource">View Source</item>
<item action="SaveAs" id="SaveAs">Save SVG As...</item>
<separator/>
<item action="Help" id="Help">Help</item>
<item action="About" id="About">About Adobe SVG Viewer...</item>
</menu>
</defs>
...
</svg>
至于如何触发自定义的函数,则可以把自定义的函数放在各图形元素的onmousedown,onclick,onmouseover中,这样执行相应操作时,就会调用自定义的相应的函数。
不知道是否解释清楚了

--  作者:upc2neiep
--  发布时间:6/26/2006 2:52:00 PM

--  
谢谢了

[此贴子已经被作者于2006-7-24 7:36:34编辑过]

--  作者:fourfire
--  发布时间:6/26/2006 6:21:00 PM

--  
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd">

<svg width="600" height="400">
<script type="text/ecmascript">
<![CDATA[

var target;
getURL("rightbutton.xml", fileLoaded);
function fileLoaded (data) {
var msg = '';
if(data.success) {
var newMenuRoot=parseXML(data.content,contextMenu);
contextMenu.replaceChild(newMenuRoot,contextMenu.getDocumentElement());  
}
}
function onmousedown(evt){

if(evt.button==2) target=evt.getTarget();
}
function showAlert(evt){
if(target!=null)
{
alert(target.getAttribute("id"));
}
target=null;
}
]]> </script>
<g >
<rect id="a" x="2cm" y="1cm" width="6cm" height="3cm" fill="green" stroke="blue"

stroke-width="5" onmousedown="onmousedown(evt)"/>
<text id="b" x="5cm" y="5cm" style="font-family:Verdana; font-size:16pt; fill:blue">
Hello, SVGViewer!
</text>
</g>
</svg>


--  作者:woaimmwwyy
--  发布时间:3/25/2009 1:56:00 PM

--  
楼主可以发个XML实现右键菜单的例子学习下吗?
  小弟刚学,先谢谢了
--  作者:woaimmwwyy
--  发布时间:3/25/2009 2:10:00 PM

--  
我的邮箱是:woaimmwwyy@gmail.com
麻烦发过来学习下
--  作者:wangyi041
--  发布时间:12/7/2012 11:17:00 AM

--  
wangyi041@126.com

谢谢了 能发我一份吗?
谢谢


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