Documentation Flash CS3 |
|||
| Programmation avec ActionScript 3.0 > Programmation de l'affichage > Utilisation des objets d'affichage > Définition des propriétés de la scène | |||
La classe Stage redéfinit la plupart des propriétés et méthodes de la classe DisplayObject. Si vous appelez l'une des propriétés ou méthodes ainsi redéfinies, Flash Player renvoie une exception. Par exemple, l'objet Stage ne possède pas de propriétés x ou y, puisque sa position est fixe en tant que conteneur principal de l'application. Or, les propriétés x et y indiquent la position d'un objet d'affichage par rapport à son conteneur, et puisque la scène ne se trouve pas dans un autre conteneur d'objets d'affichage, ces propriétés seraient inapplicables.
|
REMARQUE |
|
Certaines propriétés et méthodes de la classe Stage ne sont pas disponibles pour les objets d'affichage qui ne se trouvent pas dans le même sandbox de sécurité que le premier fichier SWF chargé. Pour plus d'informations, consultez la section sécurité de la scène. |
La propriété framerate de la classe Stage permet de définir la fréquence d'affichage pour tous les fichiers SWF chargés dans l'application. Pour plus d'informations, voir Référence du langage et des composants ActionScript 3.0.
En cas de redimensionnement de l'écran de Flash Player, le contenu de la scène est automatiquement redimensionné en conséquence. La propriété scaleMode de la classe Stage détermine comment le contenu de la scène est ajusté. Cette propriété reçoit l'une des quatre valeurs définies par des constantes dans la classe flash.display.StageScaleMode.
Avec trois des valeurs possibles pour scaleMode (StageScaleMode.EXACT_FIT, StageScaleMode.SHOW_ALL et StageScaleMode.NO_BORDER), Flash Player met à l'échelle le contenu de la scène pour l'adapter aux nouvelles dimensions.La différence entre ces trois options réside dans la méthode de redimensionnement :
StageScaleMode.EXACT_FIT respecte les proportions d'origine du fichier SWF.StageScaleMode.SHOW_ALL détermine s'il existe une bordure (comme dans le cas des barres noires qui apparaissent au-dessus et en dessous de l'image d'un film en écran large sur un téléviseur standard. StageScaleMode.NO_BORDER détermine s'il est possible ou non de recadrer une partie du contenu.Avec la quatrième option de scaleMode, StageScaleMode.NO_SCALE, le contenu de la scène conserve ses dimensions d'origine lorsque l'utilisateur redimensionne la fenêtre de Flash Player. Dans ce mode, et uniquement dans ce mode, les propriétés width et height de la classe Stage peuvent être utilisées pour déterminer les dimensions réelles (en pixels) de la fenêtre redimensionnée de Flash Player. Dans les autres modes, les propriétés stageWidth et stageHeight renvoient toujours la largeur et la hauteur originales du fichier SWF.) De plus, lorsque la propriété scaleMode est définie sur StageScaleMode.NO_SCALE et que le fichier SWF est redimensionné, l'événement resize de la classe Stage est distribué, ce qui vous permet d'effectuer des ajustements en conséquence.
Le choix de l'option StageScaleMode.NO_SCALE pour scaleMode permet donc de disposer d'un meilleur contrôle sur l'ajustement du contenu en cas de redimensionnement de la fenêtre. Par exemple, en cas de redimensionnement de la scène pour un fichier SWF contenant une vidéo et une barre de commandes, il peut être souhaitable de conserver les dimensions de cette dernière et de ne modifier que les dimensions de l'image vidéo. L'exemple suivant en est une démonstration :
// videoScreen est un objet d'affichage (une instance de Video) contenant un
// clip vidéo positionné dans le coin supérieur gauche de la scène, et
// dont les dimensions doivent s'ajuster en cas de redimensionnement du fichier SWF.
// controlBar est un objet d'affichage (un Sprite) contenant plusieurs
// boutons; il doit rester positionné dans le coin inférieur gauche de la
// scène (sous videoScreen) et ses dimensions doivent rester fixes si le fichier SWF.
// est redimensionné.
import flash.display.Stage;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
var swfStage:Stage = videoScreen.stage;
swfStage.scaleMode = StageScaleMode.NO_SCALE;
swfStage.align = StageAlign.TOP_LEFT;
function resizeDisplay(event:Event):void
{
var swfWidth:int = swfStage.stageWidth;
var swfHeight:int = swfStage.stageHeight;
// Resize the video window.
var newVideoHeight:Number = swfHeight - controlBar.height;
videoScreen.height = newVideoHeight;
videoScreen.scaleX = videoScreen.scaleY;
// Reposition the control bar.
controlBar.y = newVideoHeight;
}
swfStage.addEventListener(Event.RESIZE, resizeDisplay);
Le mode plein écran permet d'afficher un fichier SWF sur la totalité de l'écran de l'utilisateur, sans bordures, barres de menu ou autres éléments d'interface. La propriété displayState de la classe Stage permet d'activer ou désactiver ce mode pour un fichier SWF. La propriété displayState reçoit l'une des valeurs définies par les constantes de la classe flash.display.StageDisplayState. Pour activer le mode plein écran, displayState doit recevoir la valeur StageDisplayState.FULL_SCREEN :
// mySprite est une instance de Sprite déjà ajoutée à la liste d'affichage mySprite.stage.displayState = StageDisplayState.FULL_SCREEN;
Pour désactiver le mode plein écran, la propriété displayState doit recevoir la valeur StageDisplayState.NORMAL :
mySprite.stage.displayState = StageDisplayState.NORMAL;
De plus, l'utilisateur peut choisir de quitter le mode plein écran en activant une autre fenêtre ou à l'aide de plusieurs combinaisons de touches : Echappement (toutes les plates-formes), Ctrl-W (Windows), Command-W (Mac) ou Alt-F4 (Windows).
En mode plein écran, le comportement de mise à l'échelle de la scène est identique à celui du mode normal. Cette mise à l'échelle est contrôlée par la propriété scaleMode de la classe Stage. Comme toujours, si la propriété scaleMode est paramétrée sur StageScaleMode.NO_SCALE, les propriétés stageWidth et stageHeight de la scène changent en fonction de la surface d'écran occupée par le SWF (en mode plein écran, l'écran entier).
L'événement fullScreen de la classe Stage permet de détecter et répondre à l'activation ou à la désactivation du mode plein écran. Par exemple, il peut être nécessaire de repositionner, ajouter ou supprimer des éléments lors d'un changement d'état du mode plein écran, comme dans cet exemple :
import flash.events.FullScreenEvent;
function fullScreenRedraw(event:FullScreenEvent):void
{
if (event.fullScreen)
{
//supprimer les champs texte de saisie
// ajout d'un bouton qui ferme le mode plein écran
}
else
{
//réinsérer les champs texte de saisie
// suppression du bouton qui ferme le mode plein écran
}
}
mySprite.stage.addEventListener(FullScreenEvent.FULL_SCREEN, fullScreenRedraw);
Comme le montre ce code, l'objet de l'événement fullScreen est une instance de la classe flash.events.FullScreenEvent, dont la propriété fullScreen indique si le mode plein écran est activé (true) ou non (false).
Si vous utilisez le mode plein écran en ActionScript, ne perdez pas de vue les considérations suivantes :
param et un attribut embed ayant le nom allowFullScreen et la valeur true, comme ci-dessous :
<object>
...
<param name="allowFullScreen" value="true" />
<embed ... allowfullscreen="true" />
</object>
Si vous utilisez du JavaScript dans une page Web pour générer les balises d'incorporation du fichier SWF, modifiez le code JavaScript pour y ajouter la balise et l'attribut du paramètre allowFullScreen. Par exemple, si la page HTML utilise la fonction AC_FL_RunContent() (qui est utilisée à la fois par Flex Builder et les pages HTML générées par Flash), ajoutez le paramètre allowFullScreen à l'appel de cette fonction, comme ci-dessous :
AC_FL_RunContent(
...
'allowFullScreen','true',
...
); //end AC code
Cette précaution ne s'applique pas à un fichier SWF exécuté dans le lecteur autonome.
Il est nécessaire de connaître certaines restrictions liées à la sécurité. Elles sont décrites dans la section Sandboxes de sécurité.
Flash CS3
M'envoyer un message électronique lorsque des commentaires sont ajoutés à cette page | Rapport de commentaire
Page en cours: http://livedocs.adobe.com/flash/9.0_fr/main/00000150.html