Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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 是否可以扩展KineticJS事件处理程序,特别是可拖动对象的_touchend()处理程序?_Javascript_Events_Html5 Canvas_Kineticjs - Fatal编程技术网

Javascript 是否可以扩展KineticJS事件处理程序,特别是可拖动对象的_touchend()处理程序?

Javascript 是否可以扩展KineticJS事件处理程序,特别是可拖动对象的_touchend()处理程序?,javascript,events,html5-canvas,kineticjs,Javascript,Events,Html5 Canvas,Kineticjs,我在一个图层上有一些可拖动的KineticJS图像对象,我想在“touchend”事件上执行我自己的处理程序。听起来很简单!我已向每个图像对象添加了处理程序,例如: toyKinObj.on('touchend', openBoxContactEnded); 但是,由于对象的“draggable”属性为“true”,因此除了我自己的处理程序代码之外,KineticJS似乎还在调用其内置的_touchend()处理程序 我的代码执行stage.clear()和e.shape.setDraggab

我在一个图层上有一些可拖动的KineticJS图像对象,我想在“touchend”事件上执行我自己的处理程序。听起来很简单!我已向每个图像对象添加了处理程序,例如:

toyKinObj.on('touchend', openBoxContactEnded);
但是,由于对象的“draggable”属性为“true”,因此除了我自己的处理程序代码之外,KineticJS似乎还在调用其内置的_touchend()处理程序

我的代码执行stage.clear()和e.shape.setDraggable(false)操作,但这些对象修改似乎会干扰内置的_touchend()处理程序。根据我使用的代码的版本,我看到KineticJS _handleEvent()处理程序失败,因为事件已不存在,或者我稍后清除的层上的图像重新出现(后者可能发生,因为我KineticJS试图重新绘制阶段/层,作为其事件处理的一部分,即使我想清除阶段)

<>为了使事情变得更复杂,它也似乎是在我自己的KyeTICJS TouthEnter()处理程序代码的中间调用自己的处理程序代码,我确信它没有帮助。 所以我的问题是:我可以扩展_touchend()处理程序,在主_touchend()代码之后执行我的代码,而不是拥有自己的处理程序吗?或者以某种方式确保我的代码在_touchend()完成之前不会执行?i、 e.控制处理程序的执行顺序


我可以利用_touchend()在完成时调度一个用户定义的事件,触发我自己的代码,或者我可以忘记KineticJS touch事件并实现我自己的拖放处理程序,但我确信我只是缺少了一些东西,还有一种更简单的方法。

我想你想要的是取消事件传播,试试:

  shape.on('touched', function(evt) {
    evt.cancelBubble = true;
  });
更多信息: