![]() |
![]() |
||||||
|
|||||||
| Tags: |
![]() |
|
|||
|
Hello,
For days I've been struggeling with a problem that looks fairly simple, but turns out to be pretty complicated (At least for me). I have an application with two canvases: a blue canvas and a red canvas. The red canvas is a child of the blue canvas. As soon as the user drags the red canvas, he/she should not be able to drop it on the blue canvas again. The rest of the application (everything except the blue canvas) should accept drag drop of the red canvas. I struggeled a lot with this because the drag enter event handler of the application seems to "override" the application event of the blue canvas: the blue canvas seems to accept the drag drop of the red canvas. Does anybody know a solution for this problem? <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="780" creationComplete="creationCompleteHandler()"> <mx:Canvas id="BlueCanvas" x="97" y="263" width="300" height="300" backgroundColor="blue"> <mx:Canvas id="RedCanvas" x="26" y="38" width="200" height="200" mouseDown="childMouseDown(event)" backgroundColor="red"> </mx:Canvas> </mx:Canvas> <mx:Script> <![CDATA[ import mx.core.DragSource; import mx.core.UIComponent; import mx.events.DragEvent; import mx.managers.DragManager; //Create the event listeners for the drag operations. private function creationCompleteHandler():void { BlueCanvas.addEventListener(DragEvent.DRAG_ENTER, blueCanvasDragEnter); application.addEventListener(DragEvent.DRAG_ENTER, applicationDragEnter); } //The application accepts the drag drop. //(except when the user drags the red canvas over the blue canvas) private function applicationDragEnter(event ragEvent):void{ if (event.dragSource.hasFormat("data")) { DragManager.acceptDragDrop(event.currentTarget as UIComponent); } } //The blue canvas should not accept the drag drop. private function blueCanvasDragEnter(event ragEvent):void{ event.stopPropagation(); } //Start the drag drop operation private function childMouseDown(event:MouseEvent):void { var data:String = "data"; var source ragSource= new DragSource();source.addData(data, "data"); DragManager.doDrag(event.currentTarget as UIComponent, source, event); } ]]> </mx:Script> </mx:Application> |
| Sponsored Links |
![]() |
| Thread Tools | |
| Display Modes | |
|
|
- Contact Us
-|-
Adobe Dreamweaver Forums -|-
Archive -|-
Top -|-Rules/Disclaimer-|-Help/Support-|-Advertise