Actionscript does not allow overriding of function signatures, otherwise we would have done that. Because we can't do that, you have to live with "rules". The rules in flex are: Navigator children must be containers Container children must be IUIComponents UIComponent children can be anything.
________________________________ From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of dodtsair Sent: Tuesday, October 02, 2007 10:11 AM To: [email protected] Subject: [flexcoders] Bug? Flex breaks composite design pattern 1. Sprite is both a DisplayObjectContainer and a DisplayObject. 2. A DisplayObjectContainer (like Application) has the function addChild(child:DisplayObject):DisplayObject. Thus I should be able to call addChild and pass it a Sprite. However I can't and I get the error "TypeError: Error #1034: Type Coercion failed: cannot convert flash.display::[EMAIL PROTECTED] to mx.core.IUIComponent." So it seems that the documentation and/or the implementation is wrong? You should be able to pass a sprite into addChild? Maybe I made a typo and just have not caught it? Here is the app used to produce the error: <?xml version="1.0" encoding="utf-8"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml <http://www.adobe.com/2006/mxml> " layout="absolute" creationComplete="init()"> <mx:Script> <![CDATA[ internal function init(): void { this.addChild(new Sprite()); } ]]> </mx:Script> </mx:Application> I have seen several examples use this same call, I can fix it by using a class that is derived from Sprite and IUIComponent. Mike Power

