Всякий раз, когда создается новый ActiveSelection
, fabric.Canvas
запускает событие selection:created
с экземпляром fabric.ActiveSelection
, прикрепленным к нему как target
.Таким образом, вы можете прослушать это событие и соответственно изменить значение hasRotatingPoint
.
Чтобы охватить случай, когда пользователь выбирает один объект, а затем добавляет другой к выделению с помощью Shift+click
, вы также должны прослушать selection:updated
событие, поскольку это сбросит hasRotatingPoint
к значению по умолчанию.
var fabric = window.fabric
var canvas = new fabric.Canvas('canvas', {})
var opts = {
hasRotatingPoint: false,
left: 10,
}
canvas.add(new fabric.Textbox('blahblah', { ...opts, top: 60 }))
canvas.add(new fabric.Textbox('blahblah', { ...opts, top: 100 }))
canvas.setWidth(300)
canvas.setHeight(200)
canvas.on('selection:created', function (e) {
const activeSelection = e.target
activeSelection.set({hasRotatingPoint: false})
})
// fired e.g. when you select one object first,
// then add another via shift+click
canvas.on('selection:updated', function (e) {
const activeSelection = e.target
if (activeSelection.hasRotatingPoint) {
activeSelection.set({hasRotatingPoint: false})
}
})
canvas {
border: 1px dashed red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/2.4.4/fabric.min.js"></script>
<canvas id="canvas" width="300" height="200"></canvas>
Если вы хотите сделать его поведением по умолчанию для всех объектов, вы можете установить fabric.Object
прототип, поскольку все объекты (ActiveSelection
неисключение) распространяются из него.