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


Reply via email to