我正在尝试检测是否在鼠标按下事件中选择了某个对象,并且是否未选择任何对象来开始在结构中绘图。因此我不能将画布留在绘图模式中,但是一旦确定鼠标按下事件没有目标,就需要设置它。目前我已经尝试在画布上重新触发鼠标按下事件了:
this.canvas.on('mouse:down', function (e) {
if(e.target === null){ //the event had no target
this.isDrawingMode = true; //set the canvas to drawing mode
this.trigger('mouse:down'); //retrigger mouse down event
}});
但我没那么幸运。该事件被重新触发,但路径不会开始在画布上绘制。有没有人有任何想法?
答案 0 :(得分:1)
如果您在鼠标按下之前处于绘图模式,则可以调用fabric将调用的函数。
请注意我插入的{if}条件!this.isDrawingMode
或者你得到一个无限循环的递归。
var canvas = new fabric.Canvas('c');
canvas.add(new fabric.Rect({width: 50, height: 50}));
canvas.on('mouse:down', function(opt) {
if (!opt.target && !this.isDrawingMode) {
canvas.isDrawingMode = true;
canvas._onMouseDownInDrawingMode(opt.e)
}
})

<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.7.18/fabric.min.js"></script>
<canvas id="c" ></canvas>
&#13;