我打算在我的应用程序中创建一些可以作为一个组使用的元素。例如,我可以创建一个三角形和一个正方形的圆圈并将它们分组。所以我可以拖放组等等。另外我希望有时能够单独编辑组元素。
为此,我可以为组调用setDraggable(false),为所有子项调用setDraggable(true)并单独编辑它们。当我希望将它们视为一个组时,我可以为组形状调用setDraggable(true),为组中的所有子项调用setDraggable(false)。
我认为这部分效果很好。问题是事件处理。我试图搜索它,但我没有发现任何关于事件在分组对象上的行为的事情。据我所知,来自小组儿童的事件会覆盖小组的事件呼叫。例如,如果组中的元素E1具有“onclick”事件,并且当我点击E1时组对象也具有“onclick”事件,则将触发的唯一事件是来自E1对象的事件。
因此.... TL; DR:有人可以解释事件触发如何在KineticJS上与群组,子群和嵌套群体一起工作吗?
编辑:
的http // * *的jsfiddle净/ Kaze_Senshi / GKFrK / 我为测试KineticJS的团队行为而做的一个小项目。在一开始有一个带有rects的组和一个带有Circles的组,你可以加入这些组并从方块组中移动每个元素,分别单击scree左侧的按钮。这是一个非常简单的页面,只有用于测试目的的丑陋代码。
https://github.com/wfaria/sketchProject/blob/development/tests/interfaceResourceTest.html 最后我想用KineticJS从我的项目中操纵组对象,因为我正在做这些问题,我认为你可以理解它是如何工作看这个统一的测试页面。您可以在src / Model / InterfaceResource.js
答案 0 :(得分: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,那么您必须添加一些逻辑以便它们不会干扰另一个。一种简单的方法是设置某些标志,根据特定条件将事件关闭。