Flex中的手动拖放操作

时间:2009-08-31 16:07:12

标签: flex drag-and-drop

这是一个由两部分组成的问题:

  1. 我在Flex中实现了几个不规则的拖放操作(例如DataGrid ItemRenderer到Tree中)。我的偏好是修改DragManager操作以满足我的需要,事实上使用DragManager可以让我做我需要的一切,但是我遇到了严重的性能问题。例如,在多列的DataGrid上拖动任何内容,无论是使用DragManager.doDrag启动拖动,还是仅使用本机ListBase拖放功能,都会将拖动移动减慢为爬行速度。即使DataGrid被禁用/不侦听任何移动/拖动事件,也会发生这种情况。另一方面,如果通过在Sprite上调用.startDrag()来启动拖动,则拖动是平滑的并且在DataGrids和其他所有内容上执行得很好。因此,A部分将是:.startDrag()操作是否有效的原因,而通过DragManager.doDrag启动的拖动在超过某些组件时会受到如此严重的影响?

  2. 如果确实解决方案是使用.startDrag()来处理拖放,那么在释放拖动时,我将如何确定鼠标所在的组件?在我的例子中,我拖动的对象被带到显示列表的顶层,因此在舞台坐标中移动。 mouseMove,mouseOver事件不会触发我拖动的组件,因为鼠标经常在拖动的组件上,所以我需要某种stage.coordinate - > visibleComponentAtThatCoordinate转换。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

很久没有回答,是吗?这是我的几分钱:

A)我在机器上遇到同样的缓慢(拖动有时会冻结一整秒),但是,相同的代码在办公室的其他人的PC上运行得非常顺利。

B)也许这个讨论特别是底部的代码有帮助 Flex Datagrid - how to obtain item for mouse x/y coordinates?