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.

Sous-rubriques

Contrôle de la fréquence d'affichage
Contrôle de la mise à l'échelle de la scène
Utilisation du mode plein écran

Contrôle de la fréquence d'affichage

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.

Contrôle de la mise à l'échelle de la scène

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 :

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);

Utilisation du mode plein écran

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 :

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