ipad上的Kinetic JS touchstart / touchend混乱

时间:2012-12-18 02:45:18

标签: touch kineticjs touchstart

我无法调试此问题:如果你在iPad上查看这个jfiddle,你会看到你可以点击每个圆圈来改变上面的内容。当您按住一个圆圈时,您将看到它变为绿色(图像交换)。

http://jsfiddle.net/SWj9m/

现在,用手指按住一个,然后向上拖动手指,或者用另一根手指点击另一个手指按住前一个手指。现在,iPad touch事件变得混乱,绿色(touchstart)事件留在原地而不是离开。我们最终得到了多个绿色圈子意味着touchend事件从未发生过。

之前有人看过这个问题,或者想知道如何进行调试?

此代码段显示了touchstart / end事件

                    applications.on('touchstart mouseover', function() {
                        writeMessage(messageLayer, 'touchstart applications circle');
                        this.setFill({ image: images.applicationshover});
                        layer.draw();
                    });
                    applications.on('touchend mouseout', function() {
                        writeMessage(messageLayer, 'Mouseup applications circle');
                        this.setFill({ image: images.applicationsimage});
                        layer.draw();
                    });

1 个答案:

答案 0 :(得分:2)

我几乎不是kineticjs的初学者,但是我会对它进行一次尝试,因为这个问题已经暂时待在这里了。

不幸的是,触摸和鼠标事件并不像您希望的那样彼此平行。 “touchstart”类似于“mousedown”而不是“mouseover”,而“touchend”就像“mouseup”而不是“mouseout”。我在自己的一些代码中遇到了类似的问题。

我对此最好的想法是使用“mouseover”和“touchmove”,这似乎是类似的。在任何响铃中的mouseover / touchmove或mousedown / touchstart上,将该响铃设置为绿色并将 all 设置为其他响铃为蓝色。此外,在mouseup / touchend上将所有环设置为蓝色。

当用户触摸外环,然后移出背景,然后结束触摸时,仍然会有一个未处理的情况。你正在使用“mouseout”处理桌面,但没有“触摸”来为ipad做同样的事情。在我的类似情况的代码中,我添加了window.touchend的监听器。我没有尝试过,但我的另一个想法是让一个带有矩形的图层作为背景图层的舞台大小,并观察在该对象上发生的touchend。

如果这不是解决这个问题的最佳方法,那么希望真正了解他们所谈论内容的人会介入让我直截了当!