What is the best way to check if it is a panel? timgerr
--- In flexcoders@yahoogroups.com, Gordon Smith <gosm...@...> wrote: > > 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> >