Recipe 3.6.
Scaling the Movie
Problem
You want
to control the way in which a movie fits in the Player, including
the scaling.
Solution
Use the stage.scaleMode property.
Discussion
There are several different scale modes that control how a movie
is scaled when the player changes size. The modes are defined as
the following strings: exactFit, noBorder, noScale, and showAll. However, to avoid
typographical errors, these strings have also been defined in the
flash.display.StageScaleMode class as the static
properties: EXACT_FIT, NO_BORDER,
NO_SCALE, and SHOW_ALL.
The Flash Player defaults to a scale mode of
showAll. In this mode, the Flash movie scales to fit the
player's size while maintaining the movie's original aspect ratio.
The result is that the movie can potentially have borders on the
sides if the Player's aspect ratio does not match the movie's
aspect ratio. You can set a movie to showAll mode from your
main application class as follows (don't forget to import the
flash.display.StageScaleMode class):
stage.scaleMode = StageScaleMode.SHOW_ALL;
Note that stage is not a global object,
but a property of any display object, so this statement only works
in a sprite or other class that extends the DisplayObject
class.
The noBorder mode scales a movie to fit
the Player while maintaining the original aspect ratio; however, it
forces the Player to display no borders around the Stage. If the
aspect ratio of the Player does not match that of the movie, some
of the movie will be cut off on the sides. You can set a movie to
noBorder mode as follows:
stage.scaleMode = StageScaleMode.NO_BORDER;
The exactFit mode scales a movie to fit
the Player, and it alters the movie's aspect ratio, if necessary,
to match that of the Player. The result is that the movie always
fills the Player exactly, but the elements of the movie may be
distorted. For example:
stage.scaleMode = StageScaleMode.EXACT_FIT;
In noScale mode, the movie is not scaled,
and it maintains its original size and aspect ratio regardless of
the Stage's size. When you use the noScale mode, don't
forget to set the movie's alignment (see Recipe
3.7, which includes example code that demonstrates the
available alignment options). For example:
stage.scaleMode = StageScaleMode.NO_SCALE;
The scaleMode property's value does not
prevent the user from being able to scale the movie using the
right-click/Control-click menu. However, you can disable those
options in the menu, as shown in Recipe
3.8.
See Also
Recipes 3.7
and 3.8
|