Orientation manuelle

AIR 2.6 et les versions ultérieures

Vous pouvez contrôler l’orientation de la scène via la méthode setOrientation() ou setAspectRatio() de l’objet Stage.

Définition de l’orientation de la scène

Vous pouvez définir l’orientation de la scène à l’exécution à l’aide de la méthode setOrientation() de l’objet Stage. Utilisez les constantes de chaîne définies par la classe StageOrientation pour spécifier l’orientation de votre choix :

this.stage.setOrientation( StageOrientation.ROTATED_RIGHT );
Tous les périphériques et systèmes d’exploitation ne prennent pas en charge toutes les orientations possibles. Par exemple, Android 2.2 ne prend pas en charge la sélection par programmation de l’orientation vers la gauche sur les périphériques portrait standard et ne prend pas du tout en charge l’orientation à l’envers. La propriété supportedOrientations de la scène fournit une liste des orientations pouvant être transmises à la méthode setOrientation() :
var orientations:Vector.<String> = this.stage.supportedOrientations; 
for each( var orientation:String in orientations ) 
{ 
    trace( orientation ); 
}

Définition du format de la scène

Si le format de la scène vous importe, vous pouvez le définir sur portrait ou paysage. Vous pouvez définir le format soit dans le descripteur de l’application AIR, soit à l’exécution à l’aide de la méthode setAspectRatio() de l’objet Stage :

this.stage.setAspectRatio( StageAspectRatio.LANDSCAPE );

Le moteur d’exécution choisit l’une des deux orientations possibles pour le format spécifié. Il est possible que ce choix ne corresponde pas à l’orientation du périphérique. Par exemple, l’orientation par défaut est préférée à l’orientation à l’envers (AIR 3.2 et les versions antérieures) et l’orientation convenant au clavier coulissant est préférée à l’orientation opposée.

(AIR 3.3 et versions ultérieures) A partir d’AIR 3.3 (SWF version 16), vous pouvez également utiliser la constante StageAspectRatio.ANY. Si vous définissez Stage.autoOrients sur true et appelez setAspectRatio(StageAspectRatio.ANY), votre application a la capacité de réorienter toutes les orientations (paysage vers la gauche, paysage vers la droite, portait et portrait à l’envers). Autre nouveauté dans AIR 3.3 : le format est persistent et toute rotation du périphérique est soumise à l’orientation spécifiée.

Exemple : définition de l’orientation de la scène de façon à ce qu’elle corresponde à l’orientation du périphérique

L’exemple suivant illustre une fonction qui met à jour l’orientation de la scène afin qu’elle corresponde à celle du périphérique. La propriété deviceOrientation de la scène indique l’orientation physique du périphérique, même si l’orientation automatique est désactivée.

function refreshOrientation( theStage:Stage ):void 
{ 
    switch ( theStage.deviceOrientation ) 
    { 
        case StageOrientation.DEFAULT: 
            theStage.setOrientation( StageOrientation.DEFAULT ); 
            break; 
        case StageOrientation.ROTATED_RIGHT: 
            theStage.setOrientation( StageOrientation.ROTATED_LEFT ); 
            break; 
        case StageOrientation.ROTATED_LEFT: 
            theStage.setOrientation( StageOrientation.ROTATED_RIGHT ); 
            break; 
        case StageOrientation.UPSIDE_DOWN: 
            theStage.setOrientation( StageOrientation.UPSIDE_DOWN ); 
            break; 
        default: 
            //No change              
    } 
}

La modification de l’orientation est asynchrone. Vous pouvez écouter l’événement orientationChange distribué par la scène pour savoir quand la modification est terminée. Si une orientation n’est pas prise en charge sur un périphérique, l’appel de setOrientation() échoue sans distribuer d’erreur.