2016-05-02 131 views
0

是否可以從這樣創建的組中選擇一個對象?Fabric js選擇組中的對象

var r = new fabric.Rect(...); 
var l = new fabric.Line(...); 
var roadGroup = new fabric.Group([r,l],{ ... }); 

所以我想要一個組,但是要分別選擇對象l或r。

回答

1

簡單的答案是肯定的,但你應該確保你考慮到一個組的目的。

爲了得到一個句柄被包裹在一組,你可以做這樣的事情在對象上:

var r = roadGroup._objects[0]; 
var l = roadGroup._objects[1]; 

選擇一組的孩子嘗試是這樣的:

fabricCanvas.setActiveObject(roadGroup._objects[0]); 

肥皂盒

創建組的目的是將多個對象視爲如果他們是一個單一的。選擇對象的目的是允許用戶與對象進行交互。如果您希望用戶與組的一部分進行交互,您可能需要考慮不首先對其進行分組,或者在選擇子對象之前將其分組。

/肥皂盒

+0

我的目標是:1.用戶可通過UI編輯單個對象(R,L)的性能。 2.物體不能分開移動,只能在一起。所以,如果你可以用其他方式來建議,那將是很棒的=) –

+0

還有一件事:選擇應該是通過鼠標進行的。 –

+0

如果您想使用鼠標進行選擇,則必須取消組合形狀。您可以在UI中創建一個列表,列出組中的子元素,當點擊列表中的一行時,該子元素將選擇子元素。或者,您可以在將子列表保存到標準JavaScript數組後將其解組,然後雙擊該組。單擊一個子對象的行爲將如常。然後創建一個'canvas.on('selection:created',function(){...}'函數來檢查一個未分組的形狀是否是當前選中的對象,如果沒有,則重新對它們進行分組。 – nickvans