4

这是我在处理论坛上发布的帖子的复制粘贴(到目前为止我还没有得到答案),我想我不妨在这里试试。

处理是一种非常酷的绘制东西的方式,特别是对于网页。只是作为参考http://processing.org

嘿,我是处理新手,我正在用它来制作一个无闪光的网站,所以我几乎是在画布上画画。

我的鼠标位置有问题,虽然坐标在绘制时考虑左上角是位置 0,0;实际的鼠标坐标将 0,0 视为浏览器窗口的左上角。

所以我的问题是,画布在一个居中的网页上运行,每当浏览器改变大小时,画布中鼠标的坐标也是如此。

有什么办法可以使鼠标相对于画布的坐标?这样我就可以更改浏览器窗口的大小,并且鼠标坐标的左上角将始终为 0,0?

所以这就是问题所在,我不知道stackoverflow中有多少人对此有过经验,但我希望有人能帮助我:)

提前感谢堆栈溢出社区。

4

3 回答 3

3

我不熟悉处理,但不能只计算浏览器窗口左上角和画布左上角之间的差异吗?
即(使用jquery)

$(window).onresize = function() {
 //offset return position realive to the document.
 var offset = $('#canvas').offset();
 window.canvasLeft = offset.left;
 window.canvasTop = offset.top;
}

然后您可以执行以下操作:

 relativeMouseLeftPosition = mouseLeftPosition() - window.canvasLeft;

您应该将 #canvas 替换为画布区域的 css 选择器。

另请注意,window 是全局对象,我在这里使用它来处理可能的范围问题。

于 2009-01-31T13:10:02.250 回答
3

处理真的不适合创建网页。它比网站的Flash更糟糕(处理草图是 Java 小程序 - Java 不太常见,资源密集型和加载速度慢..)

也就是说,有processing.js,一个处理的 Javascript 端口。

蛇示例访问鼠标。因为它是 Javascript,并且画布是 a div,所以坐标应该比 Java(它生活在它自己的 VM 世界中)更理智一点,但我可能是错的..

于 2009-01-31T13:31:12.533 回答
-1

您可以要求用户在使用前校准系统。这不是问题的完全答案,而是问题的解决方案。

只需在屏幕中央、左上角和右下角画一个红点。要求用户点击它们,然后检索坐标。然后,您知道屏幕的角落在哪里。

于 2009-01-31T13:08:15.327 回答