Package | mx.core |
Class | public class SpriteAsset |
Inheritance | SpriteAsset FlexSprite flash.display.Sprite |
Implements | IBorder, IFlexAsset, IFlexDisplayObject |
The vector graphic image that you're embedding can be in an SVG file. You can also embed a sprite symbol that is in a SWF file produced by Flash. In both cases, the MXML compiler autogenerates a class that extends SpriteAsset to represent the embedded vector graphic image.
You don't generally have to use the SpriteAsset class directly when you write a Flex application. For example, you can embed a sprite symbol from a SWF file and display it in an Image control by writing the following:
<mx:Image id="logo" source="@Embed(source='Assets.swf', symbol='Logo')"/>
Or use it as the application's background image in CSS syntax by writing the following:
<mx:Style> Application { backgroundImage: Embed(source="Assets.swf", symbol='Logo') } <mx:Style/>
without having to understand that the MXML compiler has created a subclass of BitmapAsset for you.
However, it may be useful to understand what is happening
at the ActionScript level.
To embed a vector graphic image in ActionScript, you declare a variable
of type Class, and put [Embed]
metadata on it.
For example, you embed a sprite symbol from a SWF file like this:
[Bindable] [Embed(source="Assets.swf", symbol="Logo")] private var logoClass:Class;
The MXML compiler notices that the Logo symbol in Assets.swf
is a sprite, autogenerates a subclass of the SpriteAsset class
to represent it, and sets your variable to be a reference to this
autogenerated class.
You can then use this class reference to create instances of the
SpriteAsset using the new
operator, and use APIs
of the Sprite class on them:
var logo:SpriteAsset = SpriteAsset(new logoClass()); logo.rotation=45;
However, you rarely need to create SpriteAsset instances yourself
because image-related properties and styles can simply be set to an
image-producing class, and components will create image instances
as necessary.
For example, to display this vector graphic image in an Image control,
you can set the Image's source
property to
logoClass
.
In MXML you could do this as follows:
<mx:Image id="logo" source="{logoClass}"/>
Property | Defined by | ||
---|---|---|---|
borderMetrics : EdgeMetrics
[read-only]
Returns an EdgeMetrics object for the border that has four properties:
left , top , right ,
and bottom . | SpriteAsset | ||
measuredHeight : Number [read-only]
The measured height of this object.
| SpriteAsset | ||
measuredWidth : Number [read-only]
The measured width of this object.
| SpriteAsset |
Method | Defined by | ||
---|---|---|---|
Constructor.
| SpriteAsset | ||
move(x:Number, y:Number):void
Moves this object to the specified x and y coordinates.
| SpriteAsset | ||
setActualSize(newWidth:Number, newHeight:Number):void
Sets the actual size of this object.
| SpriteAsset | ||
toString():String
Returns a string indicating the location of this object
within the hierarchy of DisplayObjects in the Application.
| FlexSprite |
borderMetrics | property |
borderMetrics:EdgeMetrics
[read-only]
Returns an EdgeMetrics object for the border that has four properties:
left
, top
, right
,
and bottom
.
The value of each property is equal to the thickness of one side
of the border, in pixels.
public function get borderMetrics():EdgeMetrics
measuredHeight | property |
measuredHeight:Number
[read-only]The measured height of this object.
This is typically hard-coded for graphical skins
because this number is simply the number of pixels in the graphic.
For code skins, it can also be hard-coded
if you expect to be drawn at a certain size.
If your size can change based on properties, you may want
to also be an ILayoutManagerClient so a measure()
method will be called at an appropriate time,
giving you an opportunity to compute a measuredHeight
.
public function get measuredHeight():Number
measuredWidth | property |
measuredWidth:Number
[read-only]The measured width of this object.
This is typically hard-coded for graphical skins
because this number is simply the number of pixels in the graphic.
For code skins, it can also be hard-coded
if you expect to be drawn at a certain size.
If your size can change based on properties, you may want
to also be an ILayoutManagerClient so a measure()
method will be called at an appropriate time,
giving you an opportunity to compute a measuredHeight
.
public function get measuredWidth():Number
SpriteAsset | () | constructor |
public function SpriteAsset()
Constructor.
move | () | method |
public function move(x:Number, y:Number):void
Moves this object to the specified x and y coordinates.
Parametersx:Number — The new x-position for this object.
|
|
y:Number — The new y-position for this object.
|
setActualSize | () | method |
public function setActualSize(newWidth:Number, newHeight:Number):void
Sets the actual size of this object.
This method is mainly for use in implementing the
updateDisplayList()
method, which is where
you compute this object's actual size based on
its explicit size, parent-relative (percent) size,
and measured size.
You then apply this actual size to the object
by calling setActualSize()
.
In other situations, you should be setting properties
such as width
, height
,
percentWidth
, or percentHeight
rather than calling this method.
newWidth:Number — The new width for this object.
|
|
newHeight:Number — The new height for this object.
|