0

テキスト要素の追加

function add_text() {   
    var myText = new fabric.Text(text,
    {
        fontSize: size,
        fontFamily: fm,
        strokeStyle: sc,
        fill: fc,
        left: myCanvas.getWidth()/2,
        top: myCanvas.getHeight()/2
    });

    myCanvas.add(myText);
}

テキストとサイズの更新

function chng_txt() {
    var obj = myCanvas.getActiveObject();
    var fm = document.getElementById('up_text').value;
    obj.setText(fm);
    myCanvas.add(obj);
    myCanvas.renderALL();
}

function chng_fs() {
    var obj = myCanvas.getActiveObject();
    var fs = document.getElementById('up_size').value;
    obj.setFontsize(fs);
    myCanvas.add(obj);
    myCanvas.renderALL();
}

テキスト要素の削除

function rmv_txt() {
    var obj = myCanvas.getActiveObject();
    myCanvas.remove(obj);
}

私の問題は

テキストを追加したり、テキストを更新したりできます。
しかし、更新されたテキスト要素を削除できません。

4

1 に答える 1

1

実際に起こっていることは、その上に別のオブジェクトを追加していたことです。つまり、2 つの同じオブジェクトが互いに重なっていて、それを削除すると、アクティブなオブジェクトだけが削除されました。

myCanvas.add(obj);テキストを更新するときに行を削除するだけです。あなたのコードは次のようになります

function chng_fs() {
    var obj = myCanvas.getActiveObject();
    var fs = document.getElementById('up_size').value;
    obj.setFontsize(fs);
    myCanvas.renderAll();
}

また、もう1つ、変更を加えたときにキャンバスをレンダリングすることを常にお勧めします。オブジェクトを追加および削除した後、renderAll()を含めますが、正常に動作し、「renderALL」ではなく「renderAll」である必要があります。これを知っておいてください。投稿中の単なるタイプミスです。そうしないと、テキスト プロパティが変更されたことがわかりません。

于 2012-11-29T16:24:10.167 に答える