в моем приложении fabricjs я нажимаю Ctrl + щелчок левой кнопкой мыши на объекте и клонирую его, пока все хорошо.
Дело в том, что я хотел бы сделать клон, как в MS WORD, это Ctrl + Click + Drag.
кто-нибудь делал что-то подобное раньше?
спасибо, это очень важно для моего проекта.
мои функции:
**here i make true the flag**fabric.Canvas.prototype.__onMouseDown = function (e) {
//left click is pressed
lpressed = true;
}
**if the user prsees ctrl + left mouse + move , i create a new object**
$(document).mousemove(function(e){
console.log('mouse move');
if(e.ctrlKey && lpressed){
if(canvas.getActiveObject()){
var actObj = canvas.getActiveObject();
var toBack = true;
addCirlceTable(canvas.getActiveObject().left,canvas.getActiveObject().top,8,45,toBack);
canvas.renderAll();
//i select the original object which it comes on the foreground, over the new object
canvas.fire('object:selected', {target:actObj, e:e});
actObj.fire('selected',{e:e});
}
}
});
//here i disable the flag
canvas.on('mouse:up', function(o){
lpressed = false;
}
Итак, поток кода выглядит так:
1. выберите объект
2. вызвать функцию, которую я создаю новую
3. я помещаю новый объект на задний план (под оригинал)
4. я заново выбираю оригинальный объект
5. и мне нужно переместить оригинальный объект!
Шаг пятый не работает, мне нужно отпустить левый клик, а затем повторно щелкнуть по оригиналу (хотя он выбран), чтобы переместить исходный объект.
Да, вы правы, они в порядке, и процесс клонирования работает так, как я хотел, Ctrl + перетаскивание мышью.
я просто изменил функцию перемещения вместо общего события dom $(document).mousemove(function(e){})
я использую событие перемещения ткани: canvas.on('object:moving',function(e){});
Других решений пока нет …