寻找关于KineticJS与组及其子事件触发的细节

Looking for details about event triggering on KineticJS with groups and its children

本文关键字:事件 细节 KineticJS 寻找      更新时间:2023-09-26

我计划在我的应用程序中创建一些元素,可以作为一个组使用。例如,我可以创建一个圆,一个三角形和一个正方形,并将它们组合在一起。所以我可以拖拽组等等。我还希望有时能够单独编辑组元素。

对于这个,我可以为组调用setDraggable(false),为所有子节点调用setDraggable(true),并单独编辑它们。当我希望将它们作为一个组来处理时,我可以对组形状调用setDraggable(true),对组的所有子形状调用setDraggable(false)。

我认为这部分工作得很好。问题在于事件处理。我试着去搜索,但我没有找到任何关于分组对象上事件行为的内容。据我所知,来自组子的事件覆盖了来自组的事件调用。例如,如果来自组的元素E1有一个"onclick"事件,并且组对象也有一个"onclick"事件,当我单击E1时,将触发的唯一事件是来自E1对象的事件。

所以…有人能解释一下事件触发是如何在KineticJS中使用群组、子群组和嵌套群组的吗?

编辑:

  • http *//jsfiddle * net/Kaze_Senshi/GKFrK/我做了一个小项目来测试KineticJS的群体行为。在开始时,有一个矩形组和一个圆形组,您可以加入组,并从正方形组中单独移动每个元素,单击屏幕左侧的按钮。这是一个非常简单的页面,代码丑陋,只是为了测试目的。

  • https://github.com/wfaria/sketchProject/blob/development/tests/interfaceResourceTest.html最后,我想用KineticJS从我的项目中操纵组对象,因为我正在做这些问题,我认为你可以理解它是如何工作的,看起来这个单一的测试页面。你可以在src/Model/InterfaceResource.js

  • 中找到更多细节。

如果你有一个组和它的子组,并且想要打开和关闭事件,你可以这样做:

 group.setListening(false); // the group will not listen for events
 groupChild.setListening(true); // the child is listening for any defined events on the child.

和帮助指向你在正确的方向,形状事件被触发优先于组事件,正如你已经注意到的,如果都有一个onclick,那么你必须添加一些逻辑,使他们不会相互干扰。一种简单的方法是设置某些标志,根据特定的条件将事件打开或关闭。