【JavaScript】Fabric.jsで矩形にオブジェクトIDをつける
MAX
MAX999blog
JavaScriptのキャンバスを操作するライブラリであるFabric.jsを使用して、矩形をマウスで選択して削除する。
削除ボタンを押下したら削除する。
1hmtl
2<button type="button" id="deleteBtn" >削除</button>
3<canvas id="canvas"></canvas>
キャンバスを設定する。
1/*
2 * 画面ロード時に実行される関数
3 */
4function load(){
5 canvas = new fabric.Canvas("canvas");
6
7 //適当にキャンバスのサイズ設定
8 canvas.setWidth(400);
9 canvas.setHeight(400);
10}
キャンバスに描画したオブジェクトを選択し、「削除」ボタンを押下するとオブジェクトを削除するようにする。
1function deleteObj(){
2 //選択されているオブジェクトを削除する。
3 let activeObjects = canvas.getActiveObjects();
4
5 if (activeObjects != null) {
6 if (confirm('選択された箇所を全て削除しますか?')) {
7 activeObjects.forEach(obj => {
8
9 //対象オブジェクトを削除
10 canvas.remove(obj);
11
12 //矩形のIDとcanvas.item紐づけ用配列も削除する。
13 let arrIndex = arrayRect.indexOf(obj.id);
14 arrayRect.splice(arrIndex, 1);
15 });
16 }
17 } else {
18 alert("オブジェクトが選択されていません。");
19 }
20}
21
22deleteBtn.addEventListener('click', deleteObj,false);
複数のオブジェクトを選択した場合、全てのオブジェクトが削除される。
オブジェクトにIDを付与してcanvas.itemのインデックスと紐づけていた場合、紐づけ用の配列からも、削除したオブジェクトの要素は削除しておく。
キャンバスのオブジェクトIDとcanvas.itemのインデックス紐づけは以下の記事を参照。