3

子要素を持つ Fabric に svg をロードしています。groupSVGElements() を使用してそれらをグループ化しています。

各子要素を選択できるようにする必要があります。これは、子オブジェクトを選択できる onclick イベントです。

私はこのフィドルを一緒に投げましたhttp://jsfiddle.net/AnQW5/2/

getObjects を使用してグループの子オブジェクトを一覧表示することはできますが、どのオブジェクトがクリックされたかを確認する方法はありません。そう :

    canvas.observe('object:selected', function(e) {
       console.log(e.target.getObjects());
       // ???
    });

何か案は?

4

2 に答える 2

4

groupSVGElements の代わりに canvas.add.apply を使用できます。

var shapesSvg = '<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg version="1.1" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" width="320" height="240" viewBox="0 0 320 240"><rect id="rect" x="5" y="50" width="100" height="100" style="fill: rgb(255,0,0);"></rect> <circle id="circle" cx="165" cy="100" r="50" style="fill: rgb(0,255,0);"/></svg>';

var canvas = new fabric.Canvas('canvas');

canvas.setHeight($(window).height());
canvas.setWidth($(window).width());


fabric.loadSVGFromString(shapesSvg, function(objects, options) {
  canvas.add.apply(canvas, objects);
  canvas.renderAll();
});
html,
body {
  margin: 0;
  padding: 0;
  width: 100%;
  height: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.5.0/fabric.min.js"></script>
<canvas id="canvas"></canvas>

于 2015-05-15T22:28:06.723 に答える