【发布时间】:2012-01-04 09:43:45
【问题描述】:
我正在尝试围绕canvas 元素拖动图像。虽然我一直拖着工作,但它并没有像我想要的那样工作。
基本上,图像总是比canvas元素大,但是canvas内的图像左侧不能比canvas的左侧更右边,同样右侧也不允许“more”右”而不是画布的右侧。基本上,图像被限制为不显示任何 blank 画布空间。
拖动的问题在于,每当我开始拖动图像时,图像“弹出”回来,就好像 0,0 来自鼠标位置,而我实际上想从当前位置移动图像。
document.onmousemove = function(e) {
if(mouseIsDown) {
var mouseCoords = getMouseCoords(e);
offset_x += ((mouseCoords.x - canvas.offsetLeft) - myNewX);
offset_y += ((mouseCoords.y - canvas.offsetTop) - myNewY);
draw(offset_x, offset_y);
// offset_x = ((mouseCoords.x - canvas.offsetLeft) - myNewX);
// offset_y = ((mouseCoords.y - canvas.offsetTop) - myNewY);
// offset_x = (mouseCoords.x - canvas.offsetLeft) - myNewX;
// offset_y = (mouseCoords.y - canvas.offsetTop) - myNewY;
offset_x = prevX;
offset_y = prevY;
}
/*if(mouseIsDown) {
var mouseCoords = getMouseCoords(e);
var tX = (mouseCoords.x - canvas.offsetLeft);
var tY = (mouseCoords.y - canvas.offsetTop);
var deltaX = tX - prevX;
var deltaY = tY - prevY;
x += deltaX;
y += deltaY;
prevX = x;
prevY = y;
draw(x, y);
}*/
};
这就是我现在所拥有的,我有点平行效应。
【问题讨论】:
-
如果我将其复制粘贴到 jsfiddle 中,它会重新创建行为吗?如果没有,请将完整的代码放在 jsfiddle.net 上,或者至少是一个最小的例子。
-
为什么有被注释掉的代码?您应该删除它以免混淆任何人。另外,什么是 myNewX/myNewY?