我有Flex的问题。我想知道,如果我有两个列表框,并且我想在它们之间拖放,我如何防止用户拖动到同一个列表中(从而复制项目?)我不能有这种情况案例谢谢你们Flex ::我如何防止拖放,拖到自我
1
A
回答
2
没有测试过,但我想这样的事情应该工作:
听两个名单dragStart
事件并设置source
变量取决于event.target
现在听上都dragDrop
事件。如果source
与target
相同,则列出并呼叫event.preventDefault()
。
0
我找到了解决方案,我不知道该如何解决其他人的问题。我基本上在我的两个列表: `
<mx:List id="srcList" dataProvider="{_source}"
allowMultipleSelection="true"
enabled="{enabled}"
labelField="{labelField}"
iconFunction="iconFunction"
dragEnabled="true"
dropEnabled="true"
dragDrop="doDragDrop(event);"
width="100%"
height="100%"
/>
</mx:VBox>
<mx:VBox paddingTop="50">
<mx:Button label="->" enabled="{enabled}" click="add()"/>
<mx:Button label="<-" enabled="{enabled}" click="rem()"/>
</mx:VBox>
<mx:VBox width="100%" height="100%">
<mx:Label text="{right_col_heading}" />
<mx:List id="dstList" dataProvider="{_destination}"
allowMultipleSelection="true"
enabled="{enabled}"
dragEnabled="true"
dropEnabled="true"
dragDrop="doDragDrop(event);"
width="100%"
height="100%"
labelField="{labelField}"
iconFunction="iconFunction"
verticalAlign="center"
/>`
我基本上都添加了一个dragMoveEnabled =“true”以两个列表现在基本上不重新添加到同一列表中的项目本身,而只是移动的顺序(这对我来说并不重要,因为它发送的是肥皂,反向逻辑反正会按照正确的顺序)。
2
这里有一些简单的功能,我建立了一个工作应用程序,我用头围绕着flex拖放来包裹头部。我一直在寻找一种方法来使用拖放功能的多个列表,这些列表不会互相干扰。另外,我不想处理复制清单数据。
private function onlyAllowMoveDragOverHandler(event:DragEvent):void {
event.preventDefault();
event.currentTarget.showDropFeedback(event);
DragManager.showFeedback(DragManager.MOVE);
}
private function allowDropOnlyIfInitiatorEqualsComponent(event:DragEvent, component:IUIComponent):void {
event.preventDefault();
if (event.dragInitiator == component) {
DragManager.acceptDragDrop(event.target as IUIComponent);
}
else {
DragManager.showFeedback(DragManager.NONE);
}
}
而且我在我的MXML使用:
<mx:List
x="10"
y="170"
id="availableLangsList"
dataProvider="{availableLangs}"
width="100"
height="200"
dragEnabled="true"
dragMoveEnabled="true"
dropEnabled="true"
dragOver="onlyAllowMoveDragOverHandler(event);"
dragEnter="allowDropOnlyIfInitiatorEqualsComponent(event, selectedLangsList);"
dragComplete="selectedLangs.refresh();"
/>
<mx:Label x="129" y="153" text="list 4"/>
<mx:List
x="129"
y="170"
id="selectedLangsList"
dataProvider="{selectedLangs}"
width="100"
height="200"
dragEnabled="true"
dragMoveEnabled="true"
dropEnabled="true"
dragOver="onlyAllowMoveDragOverHandler(event);"
dragEnter="allowDropOnlyIfInitiatorEqualsComponent(event, availableLangsList);"
dragComplete="availableLangs.refresh();"
/>
0
在我的情况,我用了一个HashCollection(延伸的ArrayCollection)它只是谷歌,你会发现该组件。数据提供者绑定到这个拥有集合。您可以使用:dataprovider.put(key,object)而不是dataprovider.addItem(object)将项添加到集合中。
“散列”将确保集合中的唯一性。所以,即使用户拖放了已经存在于散列中的某些东西,原始值也会被新对象替换(但这并不重要,因为它的值相同)。
然而,“密钥”必须是唯一的....否则,哈希想法将无法正常工作。
0
谢谢Brice,这些功能很有帮助。
对于他们在Spark列表中工作,只需使用createDropIndicator而不是showDropFeedback更新第一个函数,并停止传递事件。
private function onlyAllowMoveDragOverHandlerS(event:DragEvent):void {
event.preventDefault();
event.currentTarget.createDropIndicator();
DragManager.showFeedback(DragManager.MOVE);
}
相关问题
- 1. 如何防止“自我”拖放datagridview?
- 2. Flex HDividedBox防止拖动
- 3. Flex拖放和拖放
- 4. 拖放到Flex AdvancedDataGrid
- 5. 防止拖放分支外
- 6. 防止拖放HTML元素
- 7. Flex TabBar拖放
- 8. Flex 4.5拖放
- 9. flex-拖放
- 10. 图像裁剪:如何防止默认拖拽拖放操作?
- 11. Flex - 防止拖动某些项目
- 12. 防止从浏览器中拖放拖放
- 13. HTML5拖放 - 防止拖放一个项目
- 14. flex:拖放问题
- 15. Flex嵌套拖放
- 16. Flex/AS3拖放 - 自定义拖放反馈
- 17. Dojo:拖放停止拖动
- 18. Flex TitleWindow模拟放置并防止拖动几秒钟?
- 19. Flex拖放和放置
- 20. 拖放,防止尴尬突出显示?
- 21. 防止在字幕上拖放
- 22. 如何防止在Flex/Flash中的父容器外面拖动?
- 23. 如何防止组件被拖出舞台在Flex 3
- 24. Flex 4使用自定义DragProxy拖放
- 25. 在Flex树中自定义拖放
- 26. 如何阻止拖放页面的拖放?
- 27. 如何防止在Qt中进行拖放操作时拖动的项目?
- 28. 如何防止在特定地点/区域拖放拖动项目?
- 29. 拖放格子网格 - flex
- 30. Flex 3树拖放很慢