Ahh... I stand corrected... it's not UIComponent that enforces that children
be UIComponents, rather its Container, which is the parent of Canvas,
etc.

Sorry for any unintentional confusion.

Troy.


On 21 Mar 2007 12:28:38 -0700, Doug McCune <[EMAIL PROTECTED]> wrote:

  if you just want a quick way to make your code work, try this:

private function myDrawing():void{
var myBitmapData:BitmapData = new BitmapData(530, 445);
myBitmapData.draw(myWorkspace1);
var bmp:Bitmap = new Bitmap(myBitmapData);

var uiComp:UIComponent = new UIComponent();
uiComp.addChild(bmp);

showDrawing.addChild(uiComp);
}

It's the same approach as Ely posted or Grant uses, basically wrap your
Bitmap in a UIComponent. But this way you don't need external classes, and
you should be able to just add two lines of code and get it working.

Doug

On 21 Mar 2007 12:12:44 -0700, Troy Gilbert <[EMAIL PROTECTED]>
wrote:
>
>   No, the issue is exactly what I described: objects that implement
> IUIComponent (which Canvas does, TextField does not) add a restriction to
> the inherited (from DisplayObjectContainer) addChild methods. The
> restriction is that the child *actually* has to implement IUIComponent. This
> is so the component can call the "measuredHeight", etc., methods to preform
> layout (whereas a standard DisplayObjectContainer doesn't perform layout and
> thus doesn't need the additional properties).
>
> What Grant Skinner's blog post describes is really just a *slightly*
> more verbose version of what Ely posted (with several examples of how to use
> it in both MXML and AS). It also has the nice upside that if your
> DisplayObject resizes it can automatically resize the UIComponent.
>
> So, go over to Grant's blog and check out the post. It'll clear
> everything up.
>
> The trick with hijacking an image is interesting, but really
> unnecessary. Grant's solution is only about two dozen lines of code (with
> comments) and works like a charm (you may need to add one or two checks for
> nulls for safety's sake depending on your use case, otherwise it seems
> production ready to me).
>
> And the cloning... well, I've got no idea how that would make a
> difference! ;-)
>
> Troy.
>
>
>
> On 3/21/07, tosadavemgr < [EMAIL PROTECTED]> wrote:
> >
> >   It is interesting that I would get 4 replies, 4 completely different
> > answers. My entire week is going this way. As is my Flex project.
> > So my choices were:
> >
> > 1. Try the Grant Skinner blog and his DisplayObjectWrapper. Not
> > exactly sure how this works or how to use it within my code.
> > 2. Add .clone to my existing syntax, which I tried without luck
> > 3. Have an image load an image and then copy that - interesting, yet I
> > have a canvas loaded with many bitmaps and need to make a bitmap of
> > the canvas ??
> > 4. And finally, from Ely, and extension of the UIComponent class. I'm
> > sure this is something, but I'm not sure how to use it.
> >
> > I really appreciate the helpful spirit on this message board. My own
> > green-ness with Flex is part of the problem, but I thought for sure my
> > original direction would work since I pulled it almost directly from
> > the Flex docs.
> >
> > Here's the code from Flex Docs:
> >
> > import flash.display.Bitmap;
> > import flash.display.BitmapData;
> > import flash.text.TextField;
> >
> > var tf:TextField = new TextField();
> > tf.text = "bitmap text";
> >
> > var myBitmapData:BitmapData = new BitmapData(80, 20);
> > myBitmapData.draw(tf);
> > var bmp:Bitmap = new Bitmap(myBitmapData);
> > this.addChild(bmp);
> >
> > They are copying a TextField rather than a canvas. Is that the issue?
> > OK to turn a TextField into a bitmap, but not a canvas?
> >
> > Dave
> >
> >
> > --- In [email protected] <flexcoders%40yahoogroups.com>, "Ely
> > Greenfield" <[EMAIL PROTECTED]> wrote:
> > >
> > >
> > >
> > >
> > > [DefaultProperty("content")]
> > > class RawContainer extends UIComponent
> > > {
> > > private var _content:Array = [];
> > > public function set content(value:Array):void
> > > {
> > > _content = value;
> > > for(var i:int = 0;i<_content.length;i++)
> > > {
> > > addChildAt(_content[i],i);
> > > }
> > > while(numChildren > _content.length)
> > > removeChildAt(_content.length);
> > > }
> > > public function get content():Array { return _content }
> > > }
> > >
> > > Ely.
> > >
> > >
> > > ________________________________
> > >
> > > From: [email protected] 
<flexcoders%40yahoogroups.com>[mailto:[email protected]<flexcoders%40yahoogroups.com>]
> > On
> > > Behalf Of Troy Gilbert
> > > Sent: Wednesday, March 21, 2007 9:42 AM
> > > To: [email protected] <flexcoders%40yahoogroups.com>
> > > Subject: Re: [flexcoders] copying bitmap data
> > >
> > >
> > >
> > > Yeah, the problem is that the Canvas container only allows children
> > that
> > > implement IUIComponent. It would have been real nice if Adobe had
> > > provided a "raw" container that did no layout of its children (but
> > > implemented IUIComponent itself), but they didn't.
> > >
> > > Fortunately, Grant Skinner has provided just such a container...
> > > DisplayObjectWrapper. Check out his blog or Google for it.
> > >
> > > If you wrap your Bitmap with the DisplayObjectWrapper first you'll
> > then
> > > be able to add it (or rather, the DisplayObjectWrapper) to the
> > canvas.
> > >
> > > Troy.
> > >
> > >
> > >
> > > On 21 Mar 2007 08:18:46 -0700, tosadavemgr <[EMAIL PROTECTED]
> > > <mailto:[EMAIL PROTECTED]> > wrote:
> > >
> > > I have a canvas in my layout and the application allows dragging
> > > and
> > > dropping items into the canvas. I need to be able to grab a
> > > bitmap of
> > > the canvas when the user is finished, so I can display the
> > > drawing on
> > > another panel, and in the FlexPrintJob function.
> > >
> > > I've tried using this code, initiated from a button:
> > >
> > > private function myDrawing():void{
> > > var myBitmapData:BitmapData = new BitmapData(530, 445);
> > > myBitmapData.draw(myWorkspace1);
> > > var bmp:Bitmap = new Bitmap(myBitmapData);
> > > showDrawing.addChild(bmp); //this isn't working
> > >
> > > }
> > >
> > > myWorkspace1 is the ID of the canvas where everything is
> > > dropped.
> > > I have a canvas with the ID=showDrawing that I'd like the bitmap
> > > to
> > > appear in.
> > > Anyone know what I need to add to the above function to get that
> > > done?
> > >
> > > Dave
> > >
> >
> >
>

Reply via email to