Javascript 寻找真正跨平台的canvas事件库
我正在开发一个HTML5应用程序,我正在寻找一些JS库来处理画布元素上的输入,适用于桌面和移动平台(否则,HTML5有什么意义?) 基本上,我需要四处拖动形状,因为它是一个类似于绘图的应用程序,而且拖动也用于在画布中导航(这样更便于移动—它们没有滚动条)。如果它也支持压缩到缩放,那就太好了Javascript 寻找真正跨平台的canvas事件库,javascript,html,canvas,html5-canvas,Javascript,Html,Canvas,Html5 Canvas,我正在开发一个HTML5应用程序,我正在寻找一些JS库来处理画布元素上的输入,适用于桌面和移动平台(否则,HTML5有什么意义?) 基本上,我需要四处拖动形状,因为它是一个类似于绘图的应用程序,而且拖动也用于在画布中导航(这样更便于移动—它们没有滚动条)。如果它也支持压缩到缩放,那就太好了 我知道kinetic.js和类似的东西,但它们似乎有单独的移动和桌面库。画布没有元素,你在画布上画的圆圈也没有附加任何事件——这与在DOM中工作完全不同 您需要跟踪在画布上绘制的每个“元素”的x/y位置,当鼠
我知道kinetic.js和类似的东西,但它们似乎有单独的移动和桌面库。画布没有元素,你在画布上画的圆圈也没有附加任何事件——这与在DOM中工作完全不同 您需要跟踪在画布上绘制的每个“元素”的x/y位置,当鼠标或触摸事件发生时,获取该事件的x/y位置,并将其与画布“元素”的x/y位置相匹配 然而,您还需要做的是,它需要一点基本的碰撞检测,以便输入的x/y位置(鼠标/触摸)不必与画布“元素”的x/y位置完全匹配 但是,使用Kinetic,您可以相当容易地检测到您在支持触摸事件的移动设备上,然后更改“mousedown”、“mouseup”、“click”等。Kinetic中的事件:
var _START, _MOVE, _END;
if('ontouchstart' in window) {
_START = 'touchstart';
_MOVE = 'touchmove';
_END = 'touchend';
}
else {
_START = 'mousedown';
_MOVE = 'mousemove';
_END = 'mouseup';
}
…然后在Kinetic的addEventListener函数中使用_START/_MOVE/_END
希望这能有所帮助。当然,一定要小心设置全局变量,这通常是不好的做法,这只是一个例子
是动态的,而且有一个很好的触摸和手势事件(捏/缩放手势)。谢谢你的建议。就像你自己说的,这有点像黑客,所以让我们拭目以待,看看是否有人知道更好的方法:)没问题。刚刚在Kinetic.js中找到了使用触摸事件的示例,可能会有所帮助。在我急于回答的时候,我没有意识到没有必要去破解动能源(愚蠢,真的)。您可以使用上面的触摸设备检测,只需将_START/_MOVE/_END传递到Kinetic的addEventListener函数。我也会修改我的原始答案。看看这是一个多么棒的软件!