2013-02-11 96 views
0

後自動我在這裏有點問題,但我不知道這是否是一個錯誤或一個新的功能,因爲在KineticJS更改日誌有以下變化:KineticJS調用moveToTop()點擊超過形狀

」拖放操作現在自動動態地創建臨時頂層,並將節點放置在那裏用於組和形狀,以大大提高拖放性能...「

我曾經使用4.0.0版本測試項目和我必須使用明確moveToTop()當我想要移動一些形狀到頂部(我認爲這是正確的方式)。現在(版本4.3.2),如果我只是點擊一些圖片,它會自動移動到頂部反對我的願望。這個臨時層應該是內部的東西,沒有任何視覺。那麼這真的是一個錯誤,或者有什麼方法可以解決這個問題。

即使實驗室發生了變化,我認爲,如果不調用moveUp,moveToTop等函數,我認爲這些對象可以保持空間順序。例如,在下面的鏈接中,沒有moveToTop()函數調用,即使這樣,如果單擊形狀,它們將移動到頂部。

http://www.html5canvastutorials.com/kineticjs/html5-canvas-move-shape-to-another-container-with-kineticjs/

感謝您的關注

回答

0

雖然我不認爲你可以完全禁用層,可以關閉形狀移到了。假設你有像一些形狀:

var shape1 = new Kinetic.Rect({ 
     x: 100, 
     y: 100, 
     width: 100, 
     height: 100, 
     fill: 'blue', 
     draggable: true 
    }); 

你需要一個參數添加到這個禁用你的形狀移動到上拖動臨時層:它必須是假的「dragOnTop」,這樣會讓你的形狀是這樣的:

var shape1 = new Kinetic.Rect({ 
     x: 100, 
     y: 100, 
     width: 100, 
     height: 100, 
     fill: 'blue', 
     draggable: true, 
     dragOnTop: false //<-- add this line so that this shape doesn't use the drag layer. 
    }); 
+0

噢謝謝你,這個解決方案在這裏工作得很好。但是,這是新的框架行爲還是一個錯誤?用你教給我的屬性名稱(dragOnTop)搜索我在github上發現了一個關於這個問題的問題https://github.com/ericdrowell/KineticJS/issues/251 – wfaria 2013-02-12 02:25:53

+0

好問題。我相信這只是行爲。當您單擊(拖動)該項目時,它會創建一個新圖層並將其放置在圖層中,而不記得上一圖層的位置。因此,當您釋放點擊時,它會將項目放置在原始圖層的頂部,除非您明確地告訴它要記住最初與on('click')事件相關的位置。 – SoluableNonagon 2013-02-12 14:26:47

+0

這是在屏幕上有大量項目時對代碼進行優化的結果。就像在實驗室中一樣,如果您擁有數千個節點,那麼在臨時新層中重繪一個節點的效率會高於舊層中的所有節點。 – SoluableNonagon 2013-02-12 14:28:43