Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 寻找真正跨平台的canvas事件库_Javascript_Html_Canvas_Html5 Canvas - Fatal编程技术网

Javascript 寻找真正跨平台的canvas事件库

Javascript 寻找真正跨平台的canvas事件库,javascript,html,canvas,html5-canvas,Javascript,Html,Canvas,Html5 Canvas,我正在开发一个HTML5应用程序,我正在寻找一些JS库来处理画布元素上的输入,适用于桌面和移动平台(否则,HTML5有什么意义?) 基本上,我需要四处拖动形状,因为它是一个类似于绘图的应用程序,而且拖动也用于在画布中导航(这样更便于移动—它们没有滚动条)。如果它也支持压缩到缩放,那就太好了 我知道kinetic.js和类似的东西,但它们似乎有单独的移动和桌面库。画布没有元素,你在画布上画的圆圈也没有附加任何事件——这与在DOM中工作完全不同 您需要跟踪在画布上绘制的每个“元素”的x/y位置,当鼠

我正在开发一个HTML5应用程序,我正在寻找一些JS库来处理画布元素上的输入,适用于桌面和移动平台(否则,HTML5有什么意义?)

基本上,我需要四处拖动形状,因为它是一个类似于绘图的应用程序,而且拖动也用于在画布中导航(这样更便于移动—它们没有滚动条)。如果它也支持压缩到缩放,那就太好了


我知道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函数。我也会修改我的原始答案。看看这是一个多么棒的软件!