我有一個不能正常工作的情況如下:Fabric.js - 免費繪製一個矩形
var canvas = new fabric.Canvas('canvas');
canvas.observe('mouse:down', function(e) { mousedown(e); });
canvas.observe('mouse:move', function(e) { mousemove(e); });
canvas.observe('mouse:up', function(e) { mouseup(e); });
var started = false;
var x = 0;
var y = 0;
/* Mousedown */
function mousedown(e) {
var mouse = canvas.getPointer(e.memo.e);
started = true;
x = mouse.x;
y = mouse.y;
var square = new fabric.Rect({
width: 1,
height: 1,
left: mouse.x,
top: mouse.y,
fill: '#000'
});
canvas.add(square);
canvas.renderAll();
canvas.setActiveObject(square);
}
/* Mousemove */
function mousemove(e) {
if(!started) {
return false;
}
var mouse = canvas.getPointer(e.memo.e);
var x = Math.min(mouse.x, x),
y = Math.min(mouse.y, y),
w = Math.abs(mouse.x - x),
h = Math.abs(mouse.y - y);
if (!w || !h) {
return false;
}
var square = canvas.getActiveObject();
square.set('top', y).set('left', x).set('width', w).set('height', h);
canvas.renderAll();
}
/* Mouseup */
function mouseup(e) {
if(started) {
started = false;
}
}
以上的邏輯是我沒有fabric.js用一個簡單的矩形繪圖系統,所以我知道它的工作原理,而不是fabric.js。
看來數學關閉或我與寬度/高度設置不正確的PARAMS/x/y值,當您繪製矩形不正確跟隨光標爲。
任何幫助非常感謝,謝謝提前:)
我不明白爲什麼面料沒有像「選擇:完成」這樣的事件傳遞給處理選擇範圍,它已經在內部處理這個邏輯。我試圖達到相同的目的,並最終將此事件添加到源代碼。 – krulik 2012-03-10 09:02:22