Javascript 我们可以克隆诸如MS Word、ctrl+鼠标单击+拖动之类的对象吗
在我的fabricjs应用程序中,我在一个对象上单击ctrl+鼠标左键,然后我克隆了它,到目前为止还不错。 关键是我想在MS WORD中进行类似的克隆,即ctrl+单击+拖动 以前有人做过这样的事吗? 谢谢,这对我的项目非常重要 我的职能是:Javascript 我们可以克隆诸如MS Word、ctrl+鼠标单击+拖动之类的对象吗,javascript,php,jquery,html5-canvas,fabricjs,Javascript,Php,Jquery,Html5 Canvas,Fabricjs,在我的fabricjs应用程序中,我在一个对象上单击ctrl+鼠标左键,然后我克隆了它,到目前为止还不错。 关键是我想在MS WORD中进行类似的克隆,即ctrl+单击+拖动 以前有人做过这样的事吗? 谢谢,这对我的项目非常重要 我的职能是: **here i make true the flag** fabric.Canvas.prototype.__onMouseDown = function (e) { //left click is presse
**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+鼠标拖动。 我只是更改了move函数,而不是一般的dom事件$document.mousemovefunctione{}
我使用结构移动事件:canvas.on'object:moving',function{} 看起来是正确的策略。您只需要正确处理mousedown/mouseup事件。