1. if (dragEvent.currentTarget is Panel) 2. currentTarget is generically typed as Object, which doesn't have an addChild() method. But if you have already checked that the dropTarget is a Panel, it's safe to do a cast:
Panel(dragEvent.currentTarget).addChild(...); Gordon Smith Adobe Flex SDK Team From: flexcoders@yahoogroups.com [mailto:flexcod...@yahoogroups.com] On Behalf Of timgerr Sent: Wednesday, December 09, 2009 12:01 PM To: flexcoders@yahoogroups.com Subject: [flexcoders] Question about getting the type of item / component with drag and drop Hello all, I have been tasked with creating a menu that gets build with drag and drop components. I have followed this tutorial (http://www.flexafterdark.com/tutorials/Flex-Drag-and-Drop) and have learned a lot. I have a few questions to get to the next stage so I will ask a few questions. 1. When I drop (or drag over) an item like a panel, how can I tell what that UIComponent is, how can I tell that is a panel? 2. How can I get that panel as an object so I can do something like panelid.addChild(new dropped item)? Thanks for the read, timgerr Here is the code that I have from the tutorial. <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" name="Drag and Drop tutorial" creationComplete="Init()"> <mx:Script> <![CDATA[ import mx.core.DragSource; import mx.core.IUIComponent; import mx.managers.DragManager; import mx.events.DragEvent; import mx.controls.Alert; public function Init():void { // a mouseDown event will start the drag this.redBox.addEventListener(MouseEvent.MOUSE_DOWN, BeginDrag); // accepting a drag/drop operation... this.blueBox.addEventListener( DragEvent.DRAG_ENTER,AcceptDrop); // handling the drop... this.blueBox.addEventListener( DragEvent.DRAG_DROP, handleDrop ); } private function BeginDrag(mouseEvent:MouseEvent):void { // the drag initiator is the object being dragged (target of the mouse event) var dragInitiator:IUIComponent = mouseEvent.currentTarget as IUIComponent; // the drag source contains data about what's being dragged var dragSource:DragSource = new DragSource(); // ask the DragManger to begin the drag DragManager.doDrag( dragInitiator, dragSource, mouseEvent, null ); } public function AcceptDrop(dragEvent:DragEvent):void { var dropTarget:IUIComponent = dragEvent.currentTarget as IUIComponent; // accept the drop DragManager.acceptDragDrop( dropTarget ); // show feedback DragManager.showFeedback( DragManager.COPY ); } public function handleDrop( dragEvent:DragEvent ):void { var dragInitiator:IUIComponent = dragEvent.dragInitiator; var dropTarget:IUIComponent = dragEvent.currentTarget as IUIComponent; Alert.show( "You dropped the Red Box on the Blue Box!" ); var obj:Object = dragEvent.target; } ]]> </mx:Script> <mx:HBox horizontalGap="100"> <mx:Canvas id="redBox" width="100" height="100" backgroundColor="Red" /> <mx:Canvas id="blueBox" width="100" height="100" backgroundColor="Blue" /> </mx:HBox> </mx:Application>