This worked:

myCanvas.removeChildAt(myCanvas.getChildIndex(event.mouseTarget));

and

myCanvas.removeChildAt(myCanvas.getChildIndex(event.mouseTarget.parent));

depending on whether the mouse is over the root Panel component or the child 
containers added to the panel.

The harder part is identifying which item in my ArrayCollection corresponds to 
the mouseTarget. What I've ended up doing is capturing the parent/child path 
(E.g. TestApp0.canvasShell.myCanvas.myContainer592) in my ArrayCollection, then 
looping until I find a match and removing that item. Is there a more efficient 
way?

--- In [email protected], Alex Harui <aha...@...> wrote:
>
> What is event.mouseTarget? and what is its parent?  You might be off a level 
> or two.
> 
> Alex Harui
> Flex SDK Developer
> Adobe Systems Inc.<http://www.adobe.com/>
> Blog: http://blogs.adobe.com/aharui
> 
> From: [email protected] [mailto:[email protected]] On 
> Behalf Of jmfillman
> Sent: Tuesday, September 01, 2009 2:01 PM
> To: [email protected]
> Subject: [flexcoders] Context Menu mouseTarget Issue
> 
> 
> 
> I have a canvas container with several custom containers added to it. I have 
> a context menu so that when you right click on the containers, you can remove 
> it from the canvas container. When I go to remove a child, I get an error, 
> below.
> 
> Code:
> private function menuSelectHandler(event:ContextMenuEvent):void {
> var remChild:Number;
> var target:String = event.mouseTarget.toString();
> trace (target);
> if (target.match("UIComponent") == null && target.match("resizeBar") == null) 
> {
> trace (" True 1");
> trace (" "+event.mouseTarget);
> remChild = cal0Day.getChildIndex(event.mouseTarget);
> 
> }
> else {
> trace (" True 2");
> trace (" "+event.mouseTarget.parent);
> remChild = myCanvas.getChildIndex(event.mouseTarget.parent);
> }
> trace (remChild);
> trace (myCanvas.getChildAt(remChild));
> myCanvas.removeChildAt(remChild);
> myAC.removeChildAt(remChild);
> updateLayout();
> }
> 
> TestApp0.canvasShell.myCanvas.myContainer592
> True 1
> TestApp0.canvasShell.myCanvas.myContainer592
> 12
> TestApp0.canvasShell.myCanvas.myContainer592
> 
> Then I get the following error:
> ArgumentError: Error #2025: The supplied DisplayObject must be a child of the 
> caller.
> at flash.display::DisplayObjectContainer/getChildIndex()
> 
> How do I do this?
>


Reply via email to