2017-07-07 108 views
0

をグループ解除しながら、個々のオブジェクトが消えて、私は私のangularJSコントローラでこの機能があります。Fabric.jsグループ/グループ解除 -

function group(){ 
    var activegroup = canvas.getActiveGroup(); 
    var objectsInGroup = activegroup.getObjects(); 

    activegroup.clone(function(newgroup) { 
     canvas.discardActiveGroup(); 
     objectsInGroup.forEach(function(object) { 
      canvas.remove(object); 
     }); 
     canvas.add(newgroup); 

    }); 
} 

function ungroup(){ 
    var activeObject = canvas.getActiveObject(); 
    if(activeObject.type=="group"){ 
     var items = activeObject._objects; 
     activeObject._restoreObjectsState(); 
     canvas.remove(activeObject); 
     for(var i = 0; i < items.length; i++) { 
      canvas.add(items[i]); 
      canvas.item(canvas.size()-1).hasControls = true; 
     } 
    } 
     canvas.renderAll(); 
} 

がほぼ完全に操作 - ジュース私は、オブジェクトがレンダリングされていないグループ解除するとき、(彼らはまだありますキャンバスは表示されません)。オブジェクトが見えなくても個別に選択できます。複数のオブジェクトを選択すると、それらのオブジェクトが選択された状態で表示されます。オブジェクトを選択解除すると、他のオブジェクトは消えます。要するに、グループ化されていないオブジェクトは、再び個別のオブジェクトとして表示されません。

これは、ボックス、円、三角形などのプリミティブにのみ適用されます。テキストは画像には影響しません。

ご協力いただき誠にありがとうございます。

答えて

0
function ungroup(){ 
var activeObject = canvas.getActiveObject(); 
if(activeObject.type=="group"){ 
    var items = activeObject._objects; 
    alert(items); 
    activeObject._restoreObjectsState(); 
    canvas.remove(activeObject); 
    for(var i = 0; i < items.length; i++) { 
     canvas.add(items[i]); 
     items[i].dirty = true; //set object dirty true 
     canvas.item(canvas.size()-1).hasControls = true; 
    } 

    canvas.renderAll(); 
} 
} 

オブジェクトdirtyをtrueに設定すると、renderAll()の呼び出しでレンダリングされ、再度描画されます。

+0

ありがとうございました!本当にチャーミングが好き! –

+0

それがうまくいくと印をつけてください。 – Durga

+0

私はこれを私の評判の欠如で正解とマークすることはできません。... –

関連する問題