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>
>


Reply via email to