【发布时间】:2010-11-24 09:30:14
【问题描述】:
这是一个由两部分组成的问题:
我在 Flex 中实现了几个不规则的拖放操作(例如 DataGrid ItemRenderer into Tree)。我的偏好是修改 DragManager 操作以满足我的需要,事实上使用 DragManager 可以让我做我需要的一切,但我在性能方面遇到了严重的问题。例如,在多列 DataGrid 上拖动任何内容,无论是使用 DragManager.doDrag 启动拖动,还是仅使用本机 ListBase 拖放功能,都会减慢拖动移动到爬行的速度。即使 DataGrid 被禁用/不侦听任何移动/拖动事件,也会发生这种情况。另一方面,如果拖动是通过在 Sprite 上调用 .startDrag() 来启动的,则拖动是平滑的,并且在 DataGrids 和其他所有内容上表现出色。所以 A 部分是:.startDrag() 操作运行得如此出色,而通过 DragManager.doDrag 启动的拖动在某些组件上受到如此严重的影响,是否有原因?
如果解决方案确实是使用 .startDrag() 处理拖放,我将如何确定释放拖动时鼠标位于哪个组件上?在我的示例中,我拖动的对象被带到显示列表的顶层,因此在舞台坐标中移动。 mouseMove,mouseOver 事件不会在我拖动的组件上触发,因为鼠标一直在拖动的组件上,所以我需要某种 stage.coordinate -> visibleComponentAtThatCoordinate 转换。对此有何想法?
【问题讨论】: