首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否禁用在Piccolo2d中拖动选定对象?

是否禁用在Piccolo2d中拖动选定对象?
EN

Stack Overflow用户
提问于 2020-03-27 02:01:31
回答 1查看 14关注 0票数 0

我知道Piccolo2d是一个老项目,但我有几个问题。

1)是否可以禁止拖拽选中的对象?对于这个特定的用例,我只想选择一个对象,而不是移动或删除它。我知道我可以使用以下命令禁用删除:

代码语言:javascript
复制
    this.selector.setDeleteKeyActive(false);

但我没有看到禁用拖动的选项。是覆盖事件处理程序中的拖动功能的唯一选项吗?

2)有没有办法使选择处理程序与平移/缩放处理程序同时处于活动状态?当你想要支持对象拾取时,禁用平移/缩放似乎有点过时。或者我必须创建自己的处理程序?

我当前的代码是:

代码语言:javascript
复制
...
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());
}
EN

回答 1

Stack Overflow用户

发布于 2020-03-27 02:49:11

在真正的开发者传统中,我找到了答案。

我的可拾取节点都分组在单独的分组节点下。这让我可以在grouping节点上添加一个事件侦听器,如下所示:

代码语言:javascript
复制
    groupNode.addInputEventListener(new PBasicInputEventHandler() {

        public void mouseReleased(final PInputEvent event) {

            PNode node = event.getPickedNode();
            if (node != null) {
                onNodeSelected(node); // your logic here
            }
        }
    });

这样做的好处是,事件包含在该组节点下分组的拾取节点。太棒了!此外,您也不必禁用平移/缩放处理程序。

唯一的缺点是,这不会为您提供节点周围的选择装饰器。不可能把它们都赢了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60873446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档