一旦我打电话给DragManager.acceptDrag
有没有办法“不接受”拖拽?说我有一个可以接受拖放的视图,但只能在某些区域。一旦用户拖过这些区域之一,我会呼叫DragManager.acceptDrag(this)
(来自DragEvent.DRAG_OVER
处理程序),但如果用户然后移出此区域,我想将拖动的状态更改为不被接受,并显示DragManager.NONE
反馈。然而,拨打DragManager.acceptDrag(null)
和DragManager.showFeedback(DragManager.NONE)
似乎都没有任何影响。一旦我接受了拖动设置反馈类型,我似乎无法改变它。如何“不接受”Flex中的拖动?
为了说清楚:用户应该能够放下的区域不是组件或甚至显示对象,实际上它们只是文本字段文本中的范围(如选区)。如果他们是他们自己的组成部分,我可以通过让他们每个人单独接受拖动事件来解决它。我想我可以创建浮动在文本上的代理组件来模拟它,但是如果没有必要,我宁愿不要。
我设法得到它在空气和浏览器现在的工作,但只有通过把代理组件上的文本的范围,你应该能够删除的东西之上。这样我就可以得到正确的反馈信息,并且在拖动退出时自动拒绝丢弃。
这是关于d & d最奇怪的事情在AIR:
DragManager.doDrag(initiator, source, event, dragImage, offsetX, offsetY);
在基于浏览器的Flex,offsetX
和offsetY
应该是负的(所以文件说,它工作正常)。但是,在AIR中运行完全相同的代码时,必须将偏移量设置为正值。相同的数字,但积极的。这非常非常奇怪。
我测试过一些什么@maclema作品,但如果你在AIR运行。在AIR中拖放看起来不同。这真的很奇怪,因为反馈不仅显示不正确,而且也不可能不接受,但坐标也完全关闭。我只是在浏览器中尝试我的应用程序而不是AIR,并且拖放完全打破。
此外,跳过dragEnter
处理程序在AIR中正常工作,但在浏览器中运行时会中断所有处理。
上接受`DRAG_ENTER`处理器的阻力只会让事情变得更糟。我仍然不能拒绝拖动(调用`DragManager.acceptDragDrop(null)`没有效果,至少没有可见的效果),并接受输入拖动删除我有的小控制。鼠标进入组件后,鼠标立即显示指针下方的+,而不是在用户拖过特殊区域时开始显示。 – Theo 2008-08-14 16:26:15