2012-07-30 67 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