In other words, UIComponents /can/ natively contain other UIComponents, only the child UIComponent will by default have a 0 width and height.
Which it means it won't show up on the stage. Which means, by default, you cannot get a native (non-extended) UIComponent to show up when you add it to another UIComponent. Which means you cannot (successfully) add a native UIComponent to another UIComponent. Thanks for catching the technicality, as a writer I love that kind of precision. But basically what Charlie was saying is correct: "UIComponent's can't contain other UIComponents without being a subclass of Container or implementing the IContainer interface." -- only he forgot to add 'and have them successfully show up on stage'. So you're both correct IMO. Thanks for the clarity. _______________________________________________________________________ Joseph Balderson | http://joeflash.ca Flex & Flash Platform Developer | Abobe Certified Developer & Trainer Author, Professional Flex 3 (coming Winter 2008) Staff Writer, Community MX | http://communitymx.com/author.cfm?cid=4674 Michael Labriola wrote: > Guys, sorry, but that's not quite right. UIComponents can contain > other UIComponents without being a container. It is a common use > case. Take a look at the simple example Adobe includes with their > docs: > > http://livedocs.adobe.com/flex/2/docs/wwhelp/wwhimpl/js/html/wwhelp.h > tm?href=00001742.html > > You will notice that the mocal text component is a UIComponent but > it contains a button and a text area... both UIComponents. > > The difference is that containers like Canvas have the logic to size > and position any child they contain by default. UIComponent does > not. So, in a UIComponent descendant, you need to write code to size > and position every child or they will exist as 0 width and 0 height > component. > > HTH, > Labriola > > > --- In flexcoders@yahoogroups.com, "Charlie Hubbard" > <[EMAIL PROTECTED]> wrote: >> Right. Image is a UIComponent, and TextArea is a UIComponent. >> UIComponent's can't contain other UIComponents without being a >> subclass of Container or implementing the IContainer interface. > Not a >> simple task. >> >> addChild() is defined in DisplayObject which apart of the Flash API >> not the Flex API. BitmapAsset is a sublcass of DisplayObject and > not >> UIComponent. So you can add it to the text area directly using > this >> code: >> >> var img : BitmapAsset = new imgCls() as BitmapAsset; >> img.x = txtArea.mouseX; >> img.y = txtArea.mouseY; >> txtArea.addChild( img ); >> >> Now, try that out, and you'll start to see some issues that you'll >> have to asess if this is going to work for what you're trying to > do. >> Since the bitmap is not apart of the document in the TextArea you > are >> going to get clipping or scrolling. If you want to do that you'll >> have to get really dirty with the TextArea API. Probably even >> ditching TextArea altogether and writing your own, or modifying > rich >> text editor. >> >> Charlie >> >> >> On Thu, May 29, 2008 at 5:37 PM, aarhac <[EMAIL PROTECTED]> wrote: >>> Hello, >>> >>> I have figured out how to work around my problem, but I do > wonder why >>> one of the following methods works, and the other doesn't. I > would be >>> grateful if someone could explain the error in the failing > method. >>> The code is pasted below (Below the line of dashes) in it's > entirety, >>> and is commented as to which works and which doesn't. >>> >>> The image referenced in this case is a 32x32 pixel png file on my >>> local system. I am attempting to display the image "on" a text > area. >>> Using the default example from the flex documentation to embed an >>> image, I cannot get the image to show up when added to the text > area's >>> display list, but it does show just fine when added to the root >>> display list. I also added the image to the textArea using >>> addChildAt(txtIcon, txtArea.numChildren) with no change in > effect. >>> The second method works just fine. I imagine that the problem has >>> something to do with applying the image as a byte array to >>> image.source, but I wonder why exactly? Is this a bug? >>> >>> Thanks in advance, >>> >>> --Aaron >>> >>> ------------------------------------ >>> >>> <?xml version="1.0" encoding="utf-8"?> >>> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" >>> layout="absolute"> >>> >>> <!--Works--> >>> <mx:Image id="txtIcon" source="@Embed(source='c:/icon.png')"/> >>> >>> <mx:TextArea id="txtArea" width="400" height="200" > click="addImage()"/> >>> <mx:Script> >>> <![CDATA[ >>> import mx.controls.Image; >>> import mx.core.BitmapAsset; >>> >>> // Doesn't work >>> [Embed(source="c:/icon.png")] >>> [Bindable] >>> public var imgCls:Class; >>> >>> public function addImage():void >>> { >>> // Doesn't work >>> var loadedImg:Image = new Image(); >>> loadedImg.source = new imgCls() as BitmapAsset; >>> >>> loadedImg.x = 10; >>> loadedImg.y = 10; >>> txtArea.addChild(loadedImg); >>> >>> // Note: While the above doesn't work, adding the >>> // image to the root display list does work: >>> //addChild(loadedImg); >>> >>> // Works >>> txtIcon.x = 50; >>> txtIcon.y = 10; >>> txtArea.addChild(txtIcon); >>> } >>> ]]> >>> </mx:Script> >>> >>> </mx:Application> >>> >>> > > > > ------------------------------------ > > -- > Flexcoders Mailing List > FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt > Search Archives: > http://www.mail-archive.com/flexcoders%40yahoogroups.comYahoo! Groups Links > > > >