1、Flex4之Tree开发二Flex4之Tree开发【二】文章分类:Flash编程 这次要说的是Flex的树组件的拖动效果,从树组件拖动到其他组件如List,DataGrid或者从其他组件拖动到Tree组件中,其实主要就是处理drag相关事件第一:从Tree到List 示例一 Xml代码 1. 2. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. !CDATA 27. importmx.controls.Button; 28. importmx.core.IUIComponent
2、; 29. importmx.core.DragSource; 30. importmx.managers.DragManager; 31. importmx.events.DragEvent; 32. importmx.collections.ArrayCollection; 33. importmx.controls.Alert; 34. /拖动对象进入时 35. privatefunctiononDragOver(event:DragEvent):void 36. 37. vardropTarget:Tree=Tree(event.currentTarget); 38. varr:int
3、=dropTarget.calculateDropIndex(event); 39. lbl.text=当前位置:+r.toString();/哪一个节点在鼠标下并给出相应信息 40. tree2.selectedIndex=r;/显示位置 41. varnode:XML=sourceTree.selectedItemasXML; 42. lbl2.text=当前的拖动对象是:+node.label;/拖动对象的名字 43. if(node.label=ActionScript) 44. DragManager.showFeedback(DragManager.NONE); 45. retur
4、n; 46. 47. /键盘控制 48. if(event.ctrlKey) 49. DragManager.showFeedback(DragManager.COPY);/复制 50. elseif(event.shiftKey) 51. DragManager.showFeedback(DragManager.LINK);/剪切 52. else 53. DragManager.showFeedback(DragManager.MOVE);/移动 54. 55. 56. 57. /拖动对象被抛出后 58. privatefunctiononDragDrop(event:DragEvent)
5、:void 59. 60. /vards:DragSource=event.dragSource; 61. vardropTarget:Tree=Tree(event.currentTarget); 62. /retrievethedataassociatedwiththeitemsformat. 63. /varitems:Array=ds.dataForFormat(items)asArray; 64. varr:int=tree2.calculateDropIndex(event); 65. tree2.selectedIndex=r;/当拖放完成后选定相应的节点 66. varnode
6、:XML=tree2.selectedItemasXML; 67. varp:*; 68. /tree2.dataDescriptor.hasChildren(node)判断有没有子节点,如果有就返回true 69. if(tree2.dataDescriptor.hasChildren(node) 70. p=node; 71. r=0; 72. trace(有子节点); 73. else 74. p=node.parent(); 75. trace(没有子节点); 76. 77. 78. /takingalloftheitemsintheDragSouce,insertthemintoth
7、e 79. /treeusingparentp. 80. /for(vari:Number=0;iitems.length;i+) 81. /varinsert:XML=; 82. /insert.label=itemsi; 83. /insert.type=restaurant; 84. /tree2.dataDescriptor.addChildAt(p,insert,r+i); 85. / 86. 87. 88. privatefunctiononDragComplete(event:DragEvent):void 89. 90. trace(stop); 91. tree2.selec
8、tedIndex=0; 92. 93. 94. 95. 96. 97. 98. 99. 101. 102. 104. 105. 106. 107. 108. !CDATA import mx.controls.Button; import mx.core.IUIComponent; import mx.core.DragSource; import mx.managers.DragManager; import mx.events.DragEvent; import mx.collections.ArrayCollection; import mx.controls.Alert; /拖动对象进
9、入时 private function onDragOver( event:DragEvent ) : void var dropTarget:Tree = Tree(event.currentTarget); var r:int = dropTarget.calculateDropIndex(event); lbl.text = 当前位置:+r.toString();/哪一个节点在鼠标下并给出相应信息 tree2.selectedIndex = r; /显示位置 var node:XML = sourceTree.selectedItem as XML; lbl2.text = 当前的拖动对
10、象是:+node.label;/拖动对象的名字 if( node.label = ActionScript ) DragManager.showFeedback(DragManager.NONE); return; / 键盘控制 if (event.ctrlKey) DragManager.showFeedback(DragManager.COPY);/复制 else if (event.shiftKey) DragManager.showFeedback(DragManager.LINK);/剪切 else DragManager.showFeedback(DragManager.MOVE)
11、;/移动 /拖动对象被抛出后 private function onDragDrop( event:DragEvent ) : void / var ds:DragSource = event.dragSource; var dropTarget:Tree = Tree(event.currentTarget); / retrieve the data associated with the items format. /var items:Array = ds.dataForFormat(items) as Array; var r:int = tree2.calculateDropInde
12、x(event); tree2.selectedIndex = r;/当拖放完成后选定相应的节点 var node:XML = tree2.selectedItem as XML; var p:*; /tree2.dataDescriptor.hasChildren(node)判断有没有子节点,如果有就返回true if( tree2.dataDescriptor.hasChildren(node) ) p = node; r = 0; trace(有子节点); else p = node.parent(); trace(没有子节点); / taking all of the items in
13、 the DragSouce, insert them into the / tree using parent p. / for(var i:Number=0; i items.length; i+) / var insert:XML = ; / insert.label = itemsi; / insert.type = restaurant; / tree2.dataDescriptor.addChildAt(p, insert, r+i); / private function onDragComplete(event:DragEvent) : void trace(stop); tree2.selectedIndex = 0; 示例二 Xml代码 1. 2. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. /nod
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1