0

您好,我想知道如何更改鼠标事件,因为我想 X.Caption 仅在我右键单击它时才激活。非常感谢您

4

3 回答 3

0

下面的 JSFiddle 展示了如何做到这一点。要实际显示工具提示等,您可以使用任何 JS 库,如 jQuery UI。

http://jsfiddle.net/haehn/ZpX34/

于 2012-08-08T17:59:35.747 回答
0

如果我是正确的(其他贡献者,请不要害怕纠正我),您可能需要根据需要编辑 XTK 的内部结构。XTK 为其事件定义了“控件”,例如X.event.js从Google Closure Library 获取的。您可以更多地查看 Google Closure 库,因为我还没有完全审查它,但主要是从它派生的,可以与来自、和的事件一起使用。您可以尝试将其包含到您的 Javascript 中并定义您自己的点击事件或与之相关的内容,然后再查看 Google Closure Library。HoverEventPanEventX.captionGoog.ui.TooltipGoog.ui.PopupGoog.ui.PopupBaseGoog.eventsGoog.events

如果我刚刚在上面的小段中写的内容不完全正确或类似的话,当然还有基本的 Javascript DOM 事件可供点击。我不太确定这些将如何与 XTK 一起使用,因为 XTK 使用 WebGL 进行渲染。您可以在http://www.w3schools.com/jsref/dom_obj_event.asp查看基本事件。如果您自己找到任何解决方案,非常欢迎您将其贡献给 XTK。

于 2012-07-30T20:16:09.410 回答
0

我认为有太多的方法没有?更改 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
    }
  }
}
于 2012-07-31T10:31:47.857 回答