Excellent, thanks very much for the responses.
As an aside, I did solve the problem by using the bitmap classes
instead as they seemed to have more consistent behavior. (And I
couldn't find a straightforward way to copy the image data with the
Image class)
Michael and Joseph, that makes perfect sense and is reproducible;
setting an explicit width and height causes the image to show as expected.
Thanks very much for the enlightenment.
-- Aaron Hachez
--- In flexcoders@yahoogroups.com, Michael Labriola [EMAIL PROTECTED]
wrote:
Close, but no.
In Flex, parents are responsible for sizing their children. Flex
Containers (which are just UIComponents with more code) do size
their children, but you can also create UIComponents that know how
to size their children.
Neither a container, nor a component that implements a container
interface needs to be involved in any way to handle this. That is
the fallacy I am addressing.
Look at the example I provided and you will not see a Container or
implementor of that interface.
In other words:
* UIComponents can contain other UIComponents.
* Containers are UIComponents which know how to automatically size
their children through the component lifecycle
Does this make sense?
Mike
--- In flexcoders@yahoogroups.com, Joseph Balderson news@ wrote:
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=1742.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
charlie.hubbard@ 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 aaronh@ 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