Когда я использую кнопку для выбора всех объектов, я могу перемещать все в порядке, и все это остается на месте. Однако, если я хочу запустить событие, когда я нажимаю объект на холсте, он не работает должным образом.Объекты перемещают позицию автоматически при попытке выбрать все на mousedown (Fabric.JS)
Адрес: Plnk;
http://plnkr.co/edit/iqn5QpBRe30eftoI1z8p?p=preview
Я использую это как фрагмент кода на SelectAll;
function selectAllCanvasObjects(){
var objs = canvas.getObjects().map(function(o) {
return o.set('active', true);
});
var group = new fabric.Group(objs, {
originX: 'center',
originY: 'center'
});
canvas._activeObject = null;
canvas.setActiveGroup(group.setCoords()).renderAll();
}
Когда я активировать его с помощью кнопки мыши, я в состоянии переместить все объекты на холсте все в порядке, и они также не двигаться позиции по щелчку.
Если я активирую его следующим образом;
triangle.on('mousedown', function(e){
selectAllCanvasObjects();
})
Он не будет инициализировать перемещение всех объектов сразу.
Если я использую;
canvas.on('mouse:down', function(e){
selectAllCanvasObjects();
})
Это сделает объекты автоматически прыгающими.
Мне интересно, есть ли способ, которым я могу использовать два предыдущих метода, поэтому функция ведет себя, как при нажатии?
Я думаю, что вы испортили поведение по умолчанию 'mouse: down', переписав его обработчиком. Если вы удалите все остальные обработчики событий мыши из холста и перезапишите «mouse: down» с помощью вашего обработчика, то он будет точно таким же, как ваша кнопка: http://plnkr.co/edit/ouubVzNi3MTl4rXIQOua?p=preview (сначала щелчок выбирает все, второй клик переводит их в '(0, 0)' по любой причине). Я думаю, вы не должны перезаписывать обработчики событий canvas, но, возможно, есть способ их расширения. –
вы хотите переопределить мышь: вниз по объектам холста, в основном то, что происходит, - это щелчок по умолчанию и перетаскивание одного объекта, а ваш клик и выбор всего работает одновременно, это создает странное поведение ваших объектов. –