以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (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=83746) |
-- 作者:Cwjnet -- 发布时间:3/7/2010 3:37:00 PM -- SVG怎么设置动态菜单? <g id="Earth7" transform="translate(1845.5,1011) rotate(0)" onclick="attr(evt)" onmouseover="choice(evt)" onmouseout="unchoice(evt)"> <use transform="translate(0 0)" x="-10" y="-10" width="20" height="20" xlink:href="#ground" class="un" /> </g> <g id="line49" onclick="attr(evt)" onmouseover="choice(evt)" onmouseout="unchoice(evt)"> <polyline points="1845.5,996.7 1845.5,1007" class="l500" /> </g> function setmenu() { if (svgSelector) { //setmenu1(svgSelector) } else { //setmenu2(default) } } function choice(evt) { svgSelector=evt.target; setmenu(); } function unchoice(evt) { svgSelector=null; setmenu(); } 以上是一个简单的代码示例,想要实现的效果是:我在不同的对象上出现不同的右键菜单。 由于SVG中没有找到右键弹出事件,所以没办法在菜单弹出前修改菜单。 所以我改成在每次对象获得或失去焦点的时候设置菜单 (效率有点低,因为对象获得一次焦点不一定会使用菜单)。 但是在弹出菜单的时候,本来有焦点的对象就会失去焦点, 导致当前对象svgSelector=null;被清空。 各位大侠有什么好办法? [此贴子已经被作者于2010-3-8 21:35:56编辑过]
|
-- 作者:Cwjnet -- 发布时间:3/19/2010 11:21:00 AM -- 已经解决。SVG在鼠标点击时可以有一个 onmousedown="mousedown(evt)" 事件,并且该事件可以接受evt.target参数,表示点击的对象, 并且事件发生在右键菜单弹出之前,只要在这里设置动态菜单就可以了。 evt.button=2表示点击的是右键,evt.button=0表示点击的是左键。
[此贴子已经被作者于2010-3-21 8:17:55编辑过]
|
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
31.250ms |