您好,我想知道如何更改鼠标事件,因为我想 X.Caption 仅在我右键单击它时才激活。非常感谢您
3 回答
下面的 JSFiddle 展示了如何做到这一点。要实际显示工具提示等,您可以使用任何 JS 库,如 jQuery UI。
如果我是正确的(其他贡献者,请不要害怕纠正我),您可能需要根据需要编辑 XTK 的内部结构。XTK 为其事件定义了“控件”,例如X.event.js
从Google Closure Library 获取的。您可以更多地查看 Google Closure 库,因为我还没有完全审查它,但主要是从它派生的,可以与来自、和的事件一起使用。您可以尝试将其包含到您的 Javascript 中并定义您自己的点击事件或与之相关的内容,然后再查看 Google Closure Library。HoverEvent
PanEvent
X.caption
Goog.ui.Tooltip
Goog.ui.Popup
Goog.ui.PopupBase
Goog.events
Goog.events
如果我刚刚在上面的小段中写的内容不完全正确或类似的话,当然还有基本的 Javascript DOM 事件可供点击。我不太确定这些将如何与 XTK 一起使用,因为 XTK 使用 WebGL 进行渲染。您可以在http://www.w3schools.com/jsref/dom_obj_event.asp查看基本事件。如果您自己找到任何解决方案,非常欢迎您将其贡献给 XTK。
我认为有太多的方法没有?更改 xtk 源代码并编译您自己的版本或类似的东西:
window.onload = function() {
myrenderer.config.HOVERING_ENABLED = false; // disabling show caption on mousehover
var mouse_x, mouse_y;
myrenderer.interactor.onMouseMove = function(event) {
mouse_x = event.offsetX;
mouse_y = event.offsetY;
}
myrenderer.interactor.onMouseDown = function(left,middle, right) {
if (right) {
var picked_id = myrenderer.pick(mouse_x, mouse_y);
if (picked_id==-1) throw new Error("No object");
var picked_object = myrenderer.get(picked_id);
var mycontainer = myrenderer.container;
var caption = new X.caption(mycontainer,mycontainer.offsetLeft + mouse_x + 10, mycontainer.offsetTop + mouse_y + 10,myrenderer.interactor);
caption.setHtml(picked_object.caption);
// use settimeout or something else to destroy the caption
}
}
}