2012-12-16 39 views
4

在KineticJS中,如何檢測點擊出現在對象/形狀之外的Click事件?在KineticJS中檢測點擊舞臺但不是形狀

我試圖得到一個Rect當用戶點擊它規模改變2,當用戶點擊以外的任何地方回返回的1規模。

的jsfiddle:http://jsfiddle.net/ABTAD/8/

管理檢測點擊階段,但點擊Rect也觸發單擊處理!不知何故.setScale(1)什麼都不做,而console.log printes東西了。當在Rect上點擊而不是空的階段時,如何防止點擊處理程序被觸發?

JS代碼來檢測在舞臺上

window.stage.getContainer().addEventListener('click', function(e) { 
    $.each(window.layer.get('.box'), function(index, box) { 
     box.setScale(1); 
     console.log('clicked on stage'); 
    }); 
}); 
+0

你知道我仍然學習動力學,但繼承人JS指針。你不需要在事物之前放置窗口來使其成爲全局。如果你把變量放在變量之前,那麼它只會在它創建的作用域/函數中可用。不要在變量變爲decleration之前放置var會使它成爲全局變量(就像在放置窗口之前一樣)。你有沒有看到這篇文章?.. http://stackoverflow.com/questions/13866660/create-a-rectangle-with-mousedown-event-in-kineticjs他把rect作爲第一層,然後你可以檢查。另外,使用普通事件是個好主意嗎? – PAEz

+0

謝謝!我實際上將它們命名爲'var App = {}; App.stage = ...'沒看過那篇文章,聽起來像是一個gd的想法 – Nyxynyx

+4

http://jsfiddle.net/ABTAD/11/ – PAEz

回答

5

點擊你可以stage.getContent訪問舞臺內容包裝()。從那裏,你可以添加一個這樣的事件處理程序:

stage.getContent()。addEventListener('click',...); //常規的JavaScript

$(stage.getContent())在( '點擊',...); // jquery

+1

來自KineticJS 4.3.1 getDOM()被重命名爲getContent() –

+1

嗨,這可以在圖層上完成,而不必設置背景矩形並綁定點擊事件嗎? –