What steps will reproduce the problem?
1. try to use NavigatorContent instance as target for object handles
2.
3.
What is the expected output? What do you see instead?
Expected working application, but i have an error,because NavigatorContent
implements IVisualElementContainer, but not extends Group container.
What version of the product are you using? On what operating system?
Latest version from SVN
Please provide any additional information below.
In Flex4ChildManager.addChild method i have changed FROM
public function addChild(container:Object, child:Object):void{
if( container is Group){
(container as Group).addElement( child as IVisualElement );
}else if( container is Container){
(container as Container).rawChildren.addChild(child as
DisplayObject);
}else{
container.addChild( child as DisplayObject);
}
}
TO:
public function addChild(container:Object, child:Object):void{
if(child is IVisualElement && container is IVisualElementContainer){
(container as IVisualElementContainer).addElement(child as
IVisualElement);
}else if(!(child is IVisualElement) && container is IRawChildrenContainer){
(container as IRawChildrenContainer).rawChildren.addChild(child as
DisplayObject);
}else{
container.addChild( child as DisplayObject);
}
}
And looks like all is working now. Added same changes to removeChild
method:
public function removeChild(container:Object, child:Object):void{
if(child is IVisualElement && container is IVisualElementContainer){
(container as IVisualElementContainer).removeElement(child as
IVisualElement);
}else if(!(child is IVisualElement) && container is IRawChildrenContainer){
(container as IRawChildrenContainer).rawChildren.removeChild(child
as DisplayObject);
}else{
container.removeChild( child as DisplayObject);
}
}
I had the same issue with spark BorderContainer public function addChild(container:Object, child:Object):void { if( container is Group ) { (container as Group).addElement( child as IVisualElement ); } if( container is SkinnableContainer) { (container as SkinnableContainer).addElement( child as IVisualElement ); } else if( container is Container ) { (container as Container).rawChildren.addChild(child as DisplayObject); } else { container.addChild( child as DisplayObject); } } public function removeChild(container:Object, child:Object):void { if( container is Group ) { (container as Group).removeElement( child as IVisualElement ); } if( container is SkinnableContainer) { (container as SkinnableContainer).removeElement( child as IVisualElement ); } else if( container is Container ) { (container as Container).rawChildren.removeChild(child as DisplayObject); } else { container.removeChild( child as DisplayObject); } }