2012-07-30 47 views

回答

0

如果我是正确的(其他贡献者,不要害怕纠正我),您可能需要编辑XTK的内部,以满足您的需求。 XTK拥有在X.event.js中定义的“控件”,因为它是从Google Closure库中获取的事件,如HoverEventPanEvent。您可以更多地关注Google Closure资料库,因为我还没有完全查看它,但X.caption大部分来自Goog.ui.Tooltip,可用于Goog.ui.Popup,Goog.ui.PopupBaseGoog.events的活动。您可以尝试将Goog.events添加到您的Javascript中,并定义您自己的点击事件或与之相关的内容,然后再查看Google Closure库。

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

+0

不要忘记通过XTK的内部看,因为他们可以比网上发布提问更加有用。对于你的问题,查看'X.event.js','X.interactor.js'和'X.caption.js'。 – Karijuana 2012-07-30 20:20:30

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 
    } 
    } 
} 
0

以下JSFiddle显示了如何执行此操作。要实际显示工具提示等,您可以使用任何JS库,如jQuery UI。

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

+0

JSfiddle很酷,但在Chrome上有一个小故障,一旦我杀死该标题/工具提示,并且它悬停在画布上,画布仍然认为你按住鼠标右键并开始从XTK交互中放大和缩小。 – Karijuana 2012-08-08 19:41:43