回答
将一个MouseEvent.MOUSE_OVER
侦听器附加到每个列表元素,用于检查是否拖动任何内容,如果是,则event.target
被突出显示。
它不适合这种情况。我只希望当List1项目拖动它时,List2的项目会突出显示。如果附加MouseEvent.MOUSE_OVER,则即使未由拖动行为触发,List2的项目也会突出显示。 – jason
@Vesper,这是我的解决方案。在List2中,我侦听DRAG_OVER和DRAG_DROP事件,在事件处理程序中计算drop index,使用layout.target.getElementAt()获取List项目,然后调用item.highlight()。但是我遇到了另一个问题,如果在仍然拖拽时(例如,从项目iv到项目iii)更改拖放项目,如何撤消之前的项目高亮? – jason
@Allan,你可以看看最新的评论吗? – jason
这里是我的解决方案和代码: 为列表2:
<s:List
itemRenderer="components.MyRenderer"
dragEnter="myDragEnterHandler(event)"
dragOver="myDragOverHandler(event)"
dragExit="myDragExitHandler(event)">
<fx:Script>
<![CDATA[
private function myDragEnterHandler(event:DragEvent):void {
//we shoudld make List2 be drop target
DragManager.acceptDragDrop(e.currentTarget as IUIComponent);
}
private function myDragOverHandler(event:DragEvent):void {
var dropIndex:int = calDropIndex(event);
var element:MyRenderer= calDropItem(dropIndex);
//undo highlight if there is last over item
if(lastOverItem) {
lastOverItem.undoHighlight();
}
//remember the last highlight one and highlight it
lastOverItem = element;
element.highlight();
}
private function myDragExitHandler(event:DragEvent):void {
var dropIndex:int = calDropIndex(event);
var element:MyRenderer= calDropItem(dropIndex);
element.undoHighlight();
}
private function calDropIndex(event:DragEvent):int {
var dropLocation:DropLocation =
event.currentTarget.layout.calculateDropLocation(event);
var dropIndex:int = dropLocation.dropIndex;
return dropIndex;
}
private function calDropItem(dropIndex:int):MyRenderer{
var element:IVisualElement;
if (layout.useVirtualLayout) {
element = layout.target.getVirtualElementAt(dropIndex);
} else {
element = layout.target.getElementAt(dropIndex);
}
return element as MyRenderer;
}
]]>
</fx:Script>
</S:List>
- 1. 列表ItemRenderer作为Draginitiator手动拖放
- 2. 通过flex列表项获取itemrenderer
- 3. 访问列表itemRenderer
- 4. 列表的itemRenderer缓存项
- 5. 拖放检测
- 6. mx:列表itemrenderer访问值
- 7. 通过拖放和jQuery检测位置?
- 8. 当通过Itemrenderer拖拽的时候滚动
- 9. 检测jframe的拖动
- 10. 检索可拖动列表的顺序
- 11. 使用ItemRenderer在Tilelist中拖放问题
- 12. iOS - 拖放碰撞检测如何检测您选择的项目何时拖过另一个子视图?
- 13. Flex检测拖拽数据
- 14. 检测拖动取消JavaFX
- 15. 使用Modernizr检测拖放
- 16. 检测dragup或拖累
- 17. 列表ItemRenderer在分类列表的数据提供者
- 18. Flex列表控件itemrenderer问题
- 19. Flex 4.6移动横向列表:Reload itemRenderer
- 20. 在Flex3中显示列表ItemRenderer索引
- 21. Flex移动Spark列表*条件* ItemRenderer
- 22. 检测列表框VB6
- 23. 代理列表(检测)
- 24. 拖放列表
- 25. 窗口检测被拖动的文件?
- 26. jQuery的拖动带冲突检测
- 27. Android - 复杂拖动的检测路径
- 28. 通过列表检索其他列表
- 29. 如何检测表单被拖动的时间?
- 30. 如何通过碰撞检测拖动对象?
一个确切的回答你的问题在于,在http://www.davidortinau.com/blog/catch_mouseover_event_when_dragging_another_object/ – Ihsan