The Sprite class is a basic display list building block: a display list node that can display graphics and can also contain children.
A Sprite object is similar to a movie clip, but does not have a timeline. Sprite is an appropriate base class for objects that do not require timelines. For example, Sprite would be a logical base class for user interface (UI) components that typically do not use the timeline.
The Sprite class is new in ActionScript 3.0. It provides an alternative to the functionality of the MovieClip class, which retains all the functionality of previous ActionScript releases to provide backward compatibility.
The UIComponent class is the base class for all visual components, both interactive and noninteractive.
An interactive component can participate in tabbing and other kinds of keyboard focus manipulation, accept low-level events like keyboard and mouse input, and be disabled so that it does not receive keyboard and mouse input. This is in contrast to noninteractive components, like Label and ProgressBar, which simply display contents and are not manipulated by the user.
The UIComponent class is not used as an MXML tag, but is used as a base class for other classes.
Add sprite in canvas:
var canvas:Canvas = new Canvas(); var uiComponent:UIComponent = new UIComponent(); canvas.addChild(uiComponent); uiComponent.addChild(new Sprite());
Just use a UIComponent as a container for the Sprite. For as far as i know UIComponent is the only component that can actually add a Non-Flex-Component as a child.