-1

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

为此,我可以为组调用 setDraggable(false) 并为所有孩子调用 setDraggable(true) 并单独编辑它们。当我希望将它们视为一个组时,我可以为组形状调用 setDraggable(true),为组的所有子代调用 setDraggable(false)。

我认为这部分运作良好。问题是事件处理。我试图搜索它,但我没有找到任何关于分组对象上的事件行为的内容。据我注意到,来自组子项的事件会覆盖来自组的事件调用。例如,如果组中的元素 E1 具有“onclick”事件,并且当我单击 E1 时组对象也具有“onclick”事件,则唯一将触发的事件是来自 E1 对象的事件。

所以.... TL;DR:有人能解释一下事件触发在 KineticJS 上是如何与组、子组和嵌套组一起工作的吗?

编辑:

  • http*//jsfiddle*net/Kaze_Senshi/GKFrK/ 我为测试 KineticJS 的组行为而制作的一个小项目。一开始有一组带有矩形,一组带有圆形,您可以加入组并从方形组中移动每个元素,分别单击屏幕左侧的按钮。这是一个非常简单的页面,带有丑陋的代码,仅用于测试目的。

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

4

1 回答 1

1

如果您有一个组及其子项,并且想要打开和关闭事件,您可以这样做:

 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,那么您必须添加一些逻辑,以便它们不会相互干扰。一种简单的方法是设置某些标志,这些标志根据某些条件关闭事件。

于 2013-03-25T14:38:21.723 回答