Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[v5]怎么在鼠标事件中,判断事件源是哪个子shape呢? #5619

Open
zzjjbbaa opened this issue Apr 7, 2024 · 16 comments
Open
Labels

Comments

@zzjjbbaa
Copy link

zzjjbbaa commented Apr 7, 2024

问题描述

v4记得是可以的,v5事件回调的参数中没发现相关的属性呢

重现链接

重现步骤

预期行为

可以获取事件源是哪个shape

平台

  • 操作系统: [macOS, Windows, Linux, React Native ...]
  • 网页浏览器: [Google Chrome, Safari, Firefox]
  • G6 版本: [4.5.1 ... ]

屏幕截图或视频(可选)

No response

补充说明(可选)

No response

@Aarebecca
Copy link
Contributor

目前为了简化操作,所以对事件进行了封装,将 target 替换为了对应的元素。这边是什么场景需要获取子 shape 呢,如果确实有需求,后面可以将其加到事件参数中

const target = eventTargetOf(event.target as DisplayObject);

@zzjjbbaa
Copy link
Author

zzjjbbaa commented Apr 7, 2024

目前为了简化操作,所以对事件进行了封装,将 target 替换为了对应的元素。这边是什么场景需要获取子 shape 呢,如果确实有需求,后面可以将其加到事件参数中

const target = eventTargetOf(event.target as DisplayObject);

好的,谢谢。个人感觉场景还是挺多的,比如点击图元上的子图形进行createEdge;再比如图元上渲染了一些图标或按钮,希望点击不同的子图形会有些不同的响应;

@Aarebecca
Copy link
Contributor

目前为了简化操作,所以对事件进行了封装,将 target 替换为了对应的元素。这边是什么场景需要获取子 shape 呢,如果确实有需求,后面可以将其加到事件参数中

const target = eventTargetOf(event.target as DisplayObject);

好的,谢谢。个人感觉场景还是挺多的,比如点击图元上的子图形进行createEdge;再比如图元上渲染了一些图标或按钮,希望点击不同的子图形会有些不同的响应;

那我后面把这个加上

@zzjjbbaa
Copy link
Author

zzjjbbaa commented Apr 7, 2024

目前为了简化操作,所以对事件进行了封装,将 target 替换为了对应的元素。这边是什么场景需要获取子 shape 呢,如果确实有需求,后面可以将其加到事件参数中

const target = eventTargetOf(event.target as DisplayObject);

好的,谢谢。个人感觉场景还是挺多的,比如点击图元上的子图形进行createEdge;再比如图元上渲染了一些图标或按钮,希望点击不同的子图形会有些不同的响应;

那我后面把这个加上

这个可以提高很大的灵活性,万分感谢

@zzjjbbaa
Copy link
Author

zzjjbbaa commented Apr 9, 2024

@Aarebecca beta.32中,似乎只有click事件能通过originalTarget判定事件源是哪个子shape;其他的事件,比如drag-start、drag...,事件参数中target和originalTarget都是图元而不是shape

@mivui
Copy link

mivui commented Jul 15, 2024

@Aarebecca drag事件无法获取具体子shape,此问题可以跟进一下吗?

@zzjjbbaa
Copy link
Author

@Aarebecca drag事件无法获取具体子shape,此问题可以跟进一下吗?

我的实现方式是结合三个事件:NodeEvent.PointerDownCanvasEvent.PointerMoveCanvasEvent.PointerUp这三个事件,实现node 子图形的拖拽

@mivui
Copy link

mivui commented Jul 16, 2024

是g-plugin-dragndrop的问题,通过父节点dispatchEvent获取不到具体子shape。

@zzjjbbaa
Copy link
Author

是g-plugin-dragndrop的问题,通过父节点dispatchEvent获取不到具体子shape

等待官方处理 @Aarebecca

@mivui mivui mentioned this issue Jul 17, 2024
14 tasks
@Aarebecca
Copy link
Contributor

@mivui @zzjjbbaa 这边看是可以在 drag 事件中拿到 originalTarget 的呢

image image

@mivui
Copy link

mivui commented Jul 19, 2024

还是同样的问题,class为key是根节点图形是可以获取到,例如拖拽节点需要获取port子图形禁止拖拽,完成连线功能。

@North-City
Copy link

能不能提供获取元素实例的API呢。有些场景需要访问到实例.感谢!

@zzjjbbaa
Copy link
Author

能不能提供获取元素实例的API呢。有些场景需要访问到实例.感谢!

event中好像有context可以得到graph实例,然后用graph实例就可以拿到相关的元素了

@North-City
Copy link

我想的是通过唯一标识取拿到这个元素的实例。 目前可以拿到实例的只有内部事件的回调函数中参数event才可以。 貌似目前没有找到相关方法。 我记得源码内部有个getElement 这个方法可以获取吧。明天再看一下。

@mivui
Copy link

mivui commented Aug 22, 2024

我想的是通过唯一标识取拿到这个元素的实例。 目前可以拿到实例的只有内部事件的回调函数中参数event才可以。 貌似目前没有找到相关方法。 我记得源码内部有个getElement 这个方法可以获取吧。明天再看一下。

有没有解决?

@North-City
Copy link

我想的是通过唯一标识取拿到这个元素的实例。 目前可以拿到实例的只有内部事件的回调函数中参数event才可以。 貌似目前没有找到相关方法。 我记得源码内部有个getElement 这个方法可以获取吧。明天再看一下。

有没有解决?

拿到了。通过context中element 控制器中的getElement 方法可以获取,参数是你要查询的元素id

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants