我知道Piccolo2d是一个老项目,但我有几个问题。
1)是否可以禁止拖拽选中的对象?对于这个特定的用例,我只想选择一个对象,而不是移动或删除它。我知道我可以使用以下命令禁用删除:
this.selector.setDeleteKeyActive(false);但我没有看到禁用拖动的选项。是覆盖事件处理程序中的拖动功能的唯一选项吗?
2)有没有办法使选择处理程序与平移/缩放处理程序同时处于活动状态?当你想要支持对象拾取时,禁用平移/缩放似乎有点过时。或者我必须创建自己的处理程序?
我当前的代码是:
...
this.pluginContext.getCanvas().setPanEventHandler(null);
this.selector = new PSelectionEventHandler(this.mapLayer.getNode(), this.mapLayer.getNode()) {
};
this.selector.setDeleteKeyActive(false);
this.pluginContext.getCanvas().addInputEventListener(this.selector);
PNotificationCenter.defaultCenter().addListener(this, "nodeSelected",
PSelectionEventHandler.SELECTION_CHANGED_NOTIFICATION, this.selector);
...
public void nodeSelected(final PNotification notification) {
logger.debug("Selection - " + this.selector.getSelection().toString());
}发布于 2020-03-27 02:49:11
在真正的开发者传统中,我找到了答案。
我的可拾取节点都分组在单独的分组节点下。这让我可以在grouping节点上添加一个事件侦听器,如下所示:
groupNode.addInputEventListener(new PBasicInputEventHandler() {
public void mouseReleased(final PInputEvent event) {
PNode node = event.getPickedNode();
if (node != null) {
onNodeSelected(node); // your logic here
}
}
});这样做的好处是,事件包含在该组节点下分组的拾取节点。太棒了!此外,您也不必禁用平移/缩放处理程序。
唯一的缺点是,这不会为您提供节点周围的选择装饰器。不可能把它们都赢了!
https://stackoverflow.com/questions/60873446
复制相似问题