Built in to the Flash Player are low-level flash.* classes such as
Sprite. The Flex framework libraries contains higher-level mx.* classes
such as UIComponent, Button, Container, VBox, etc. which add many
capabilities beyond those in the Player.
 
The Flex framework was designed with the assumption that most developers
would be delighted with the greater capabilities of the high-level
classes and not have much interest in the low-level ones, which are
primitive by comparison. In hindsight, this was wrongheaded. Many people
like you want to mix the two -- generally because the low-level classes
can have greater performance or smaller code size, or because you're
bringing over code from the Flash-not-Flex world -- and it isn't as easy
as it should be to mix them. I hope we can do better in a future
release.
 
You write AS3 code to use both flash.* and mx.* classes, and, once you
understand a few rules, you can use both sets of classes in a Flex
application. But it isn't completely trivial, so it's dangerous to just
take a simple Sprite-based class and expect it to "just work" in Flex.
 
The problem you're running into here is that Flex Containers such as
VBox assume that their children are high-level UIComponents rather than
just low-level Sprites. One reason is that containers do automatic
layout management, which requires code in the children to report how big
the child wants to be, etc.
 
So currently you have to work around this assumption by doing things
like creating an intermediate UIComponent to parent the Sprite or adding
the Sprite to the Container as a "raw" child (see the rawChildren
property).
 
If you're new to Flex, I suggest beginning with complete Flex examples
that use standard Flex components and postponing trying to use
Sprites-based classes. You'll make more progress, gain confidence, and
then be in a better position to understand how to take advantage of
Sprites later.
 
Gordon Smith
Adobe Flex SDK Team

________________________________

From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On
Behalf Of rueter007
Sent: Thursday, January 17, 2008 10:12 PM
To: flexcoders@yahoogroups.com
Subject: [flexcoders] Re: addchild



you cannot add sprites directly that way. you can do the following.

var ballParent: UIComponent = new UIComponent();
ballParent.addChild(ball);
vbox.addChild(ballParent);

and ofcourse, you have to set the width, height etc.

- venkat
http://www.venkatj.com <http://www.venkatj.com> 

--- In flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com>
, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote:
>
> This is the entire ball class
> package com.oreilly.programmingflex.states {
> 
> 
> import flash.display.Sprite;
> 
> public class Ball extends Sprite {
> private var radius:Number;
> private var color:uint;
> 
> public function Ball(radius:Number=40, color:uint=0xff0000) {
> this.radius = radius;
> this.color = color;
> init();
> }
> public function init():void {
> graphics.beginFill(color);
> graphics.drawCircle(0, 0, radius);
> graphics.endFill();
> 
> }
> }
> 
> 
> }
> 
> 
> Sherif Abdou wrote:
> > it means that the ball is not a IUIcomponenet which it is required
for 
> > it to be added on stage, show me a bit of the ball class code so i
can 
> > know
> >
> > ----- Original Message ----
> > From: "[EMAIL PROTECTED]" <[EMAIL PROTECTED]>
> > To: flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com>

> > Sent: Thursday, January 17, 2008 11:38:26 PM
> > Subject: Re: [flexcoders] addchild
> >
> > OK thanks. Now when I try to use addChild, I get this error. What
does
> > it mean ?
> > myball=new Ball;
> > addChild(myball) ;
> > TypeError: Error #1034: Type Coercion failed: cannot convert
> > com.oreilly. programmingflex. states::Ball@ 5787299 to 
> > mx.core.IUIComponen t.
> > at
> > mx.core::Container/http://www.adobe. com/2006/ flex/mx/internal 
> > ::addingChild
<http://www.adobe.com/2006/flex/mx/internal::addingChild
<http://www.adobe.com/2006/flex/mx/internal::addingChild> >()
> > at mx.core::Container/ addChildAt( )
> > at mx.core::Container/ addChild( )
> > at Main/::initializeHa ndler()
> > at Main/___Application 1_initialize( )
> > at
> > flash.events: :EventDispatcher /flash.events: EventDispatcher: 
> > :dispatchEventFu nction()
> > at flash.events: :EventDispatcher /dispatchEvent( )
> > at mx.core::UIComponen t/dispatchEvent( )
> > at mx.core::UIComponen t/set processedDescriptor s()
> > at mx.core::Container/ createComponents FromDescriptors( )
> >
> > Sherif Abdou wrote:
> > > addChild not addchild
> > >
> > > ----- Original Message ----
> > > From: "[EMAIL PROTECTED] org <mailto:info1%40reenie.org>"
<[EMAIL PROTECTED] 
> > org <mailto:info1%40reenie.org>>
> > > To: [EMAIL PROTECTED] ups.com
<mailto:flexcoders%40yahoogroups.com>
> > > Sent: Thursday, January 17, 2008 11:03:15 PM
> > > Subject: [flexcoders] addchild
> > >
> > > I have a ball class. I can make a ball. How do I add it to the
stage ?
> > >
> > > I have seem plenty of examples, and they use addchild.
> > > Every time I try to use addchild, I get this error:
> > > Error: Call to a possibly undefined method addChild.
> > >
> > > or if I try to attach it to an existing element
> > > such as <mx:VBox id="vbox">
> > > vbox.addchild( ball);
> > > I get :Error: Access of undefined property vbox.
> > >
> > > So what can I put addchild on ?
> > >
> > >
> > >
> > > ------------ --------- --------- --------- --------- --------- -
> > > Never miss a thing. Make Yahoo your homepage.
> > > <http://us.rd. yahoo.com/ evt=51438/ *http://www. yahoo.com/ r/hs 
> > <http://us.rd.yahoo.com/evt=51438/*http://www.yahoo.com/r/hs
<http://us.rd.yahoo.com/evt=51438/*http://www.yahoo.com/r/hs> >>
> > >
> >
> >
> >
> >
----------------------------------------------------------
> > Be a better friend, newshound, and know-it-all with Yahoo! Mobile.
Try 
> > it now. 
> >
<http://us.rd.yahoo.com/evt=51733/*http://mobile.yahoo.com/;_ylt=Ahu06i6
2sR8HDtDypao8Wcj9tAcJ%20
<http://us.rd.yahoo.com/evt=51733/*http://mobile.yahoo.com/;_ylt=Ahu06i6
2sR8HDtDypao8Wcj9tAcJ%20> >

> >
> >
>



 

Reply via email to