API d’ActionScript propres aux applications AIR mobiles

Les API suivantes sont disponibles dans les applications AIR uniquement sur les périphériques mobiles. Elles ne fonctionnent actuellement pas dans Flash Player ou les versions de bureau d’AIR.

API d’orientation de l’écran

L’API d’orientation de l’écran permet de manipuler l’orientation de la scène et de l’iPhone :

  • Stage.autoOrients : indique si l’application est définie de façon à réorienter la scène automatiquement lorsque le périphérique pivote. Cette propriété est définie sur true lorsque l’option Orientation auto est sélectionnée dans la boîte de dialogue Paramètres de l’iPhone de Flash Professional CS5. (Vous pouvez également définir l’élément autoOrients sur true dans le fichier descripteur d’application.) Pour plus d’informations, voir Paramètres de l’application iPhone . Vous pouvez annuler la réorientation automatique en ajoutant un écouteur d’événement orientationChanging à l’objet Stage. L’appel de la méthode preventDefault() de cet objet d’événement annule la réorientation automatique.

    Si vous activez l’orientation automatique, définissez la propriété align de la scène comme suit pour optimiser les résultats :

    stage.align = StageAlign.TOP_LEFT; 
    stage.scaleMode = StageScaleMode.NO_SCALE;
  • Stage.deviceOrientation : orientation physique du périphérique. La classe StageOrientation définit les valeurs de cette propriété.

  • Stage.orientation : orientation actuelle de la scène. La classe StageOrientation définit les valeurs de cette propriété.

  • Stage.supportsOrientationChange : définie sur true sur l’iPhone, sur false dans une application AIR.

  • Stage.setOrientation() : définit l’orientation de la scène. Cette méthode gère un paramètre unique, à savoir une chaîne qui définit la nouvelle orientation de la scène. Les constantes de la classe StageOrientation définissent les diverses valeurs du paramètre.

  • StageOrientation : définit les valeurs d’orientation de la scène. Ainsi, StageOrientation.ROTATED_RIGHT indique une scène qui pivote vers la droite relativement à l’orientation par défaut du périphérique.

  • StageOrientationEvent : définit les événements distribués par la scène en cas de changement d’orientation de l’écran. Cet événement se produit lorsque l’utilisateur fait pivoter l’iPhone. Il existe deux types d’événement. La scène distribue l’événement orientationChanging lorsque le périphérique pivote. Pour désactiver la réorientation de la scène, appelez la méthode preventDefault() de l’objet d’événement orientationChanging . La scène distribue l’événement orientationChange une fois la réorientation de la scène terminée.

L’API d’orientation de l’écran ne présente actuellement un intérêt que dans les applications AIR qui s’exécutent sur les périphériques mobiles. Si une application AIR mobile et une application AIR de bureau partagent le code source, utilisez la propriété Stage.supportsOrientationChange pour vérifier si l’API est prise en charge.

L’exemple suivant indique comment réagir à la rotation du périphérique par l’utilisateur :

stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE, 
            onOrientationChange); 
 
function onOrientationChange(event:StageOrientationEvent):void 
{ 
    switch (event.afterOrientation) { 
        case StageOrientation.DEFAULT: 
            // re-orient display objects based on 
            // the default (right-side up) orientation. 
            break; 
        case StageOrientation.ROTATED_RIGHT: 
            // Re-orient display objects based on 
            // right-hand orientation. 
            break; 
        case StageOrientation.ROTATED_LEFT: 
            // Re-orient display objects based on 
            // left-hand orientation. 
            break; 
        case StageOrientation.UPSIDE_DOWN: 
            // Re-orient display objects based on 
            // upside-down orientation. 
            break; 
}

Dans cet exemple, des commentaires remplacent le code fonctionnel en cas d’orientations diverses de la scène.

Pour modifier l’orientation de la scène, appelez la méthode setOrientation() de l’objet Stage. La définition de l’orientation est une opération asynchrone. Pour vérifier si l’orientation est terminée, écoutez l’événement orientationChange . Le code suivant indique comment activer l’orientation vers la droite de la scène :

stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE, 
            onOrientationChange); 
stage.setOrientation(StageOrientation.ROTATED_RIGHT); 
 
function onOrientationChange(event:StageOrientationEvent):void 
{ 
    // Code to handle the new Stage orientation 
}

Lorsque la scène pivote, elle est redimensionnée et l’objet Stage distribue un événement resize . Vous pouvez redimensionner et repositionner sur la scène les objets d’affichage suite à la distribution de l’événement resize .

NativeApplication.systemIdleMode et SystemIdleMode

La propriété NativeApplication.systemIdleMode permet de désactiver le mode Veille de l’iPhone. Par défaut, un iPhone passe en mode Veille s’il ne se produit aucune interaction avec l’écran tactile pendant une période donnée. Le mode Veille risque d’entraîner l’assombrissement de l’écran. Il active également parfois l’activation du mode Verrouillage. Vous pouvez définir cette propriété sur deux valeurs, au choix :

  • SystemIdleMode.NORMAL : l’iPhone adopte le comportement standard en mode Veille.

  • SystemIdleMode.KEEP_AWAKE : l’application essaye de désactiver le mode Veille de l’iPhone.

Cette fonctionnalité est prise en charge uniquement sur les périphériques mobiles. Elle n’est pas prise en charge dans les applications AIR qui s’exécutent sur des systèmes d’exploitation de bureau. Dans une application qui s’exécute sur le bureau, le réglage de la propriété NativeApplication.systemIdleMode est sans effet.

Le code suivant illustre la désactivation du mode Veille de l’iPhone :

NativeApplication.nativeApplication.systemIdleMode = SystemIdleMode.KEEP_AWAKE;

CameraRoll

La classe CameraRoll permet d’ajouter une image au dossier Pellicule de l’iPhone. La méthode addBitmapData() ajoute une image au dossier Pellicule de l’iPhone. Elle ne gère qu’un seul paramètre, bitmapData . Ce paramètre correspond à l’objet BitmapData contenant l’image à ajouter au dossier Pellicule.

La fonctionnalité CameraRoll est prise en charge uniquement sur les périphériques mobiles. Elle n’est pas prise en charge dans les applications AIR qui s’exécutent sur des systèmes d’exploitation de bureau. Pour vérifier à l’exécution si l’application prend en charge la fonction CameraRoll, vérifiez la propriété CameraRoll.supportsAddBitmapData statique.

Une fois la méthode addBitmapData() appelée, l’objet CameraRoll distribue l’un des deux événements suivants :

  • complete : indique que l’opération a abouti.

  • error : indique qu’il s’est produit une erreur. Il est, par exemple, possible que l’iPhone ne dispose pas de suffisamment d’espace libre pour stocker l’image.

Le code suivant ajoute une image de la scène (une capture d’écran) au dossier Pellicule :

if (CameraRoll.supportsAddBitmapData) 
{ 
    var cameraRoll:CameraRoll = new CameraRoll(); 
    cameraRoll.addEventListener(ErrorEvent.ERROR, onCrError); 
    cameraRoll.addEventListener(Event.COMPLETE, onCrComplete); 
    var bitmapData:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight); 
    bitmapData.draw(stage); 
    cameraRoll.addBitmapData(bitmapData); 
} 
else 
{ 
    trace("not supported."); 
} 
 
function onCrError(event:ErrorEvent):void 
{ 
    // Notify user. 
} 
 
function onCrComplete(event:Event):void 
{ 
    // Notify user. 
}

DisplayObject.cacheAsBitmapMatrix

La propriété cacheAsBitmapMatrix est un objet Matrix qui définit le mode de rendu d’un objet d’affichage si cacheAsBitmap est défini sur true . Cette matrice fait office de matrice de transformation lors du rendu de la version bitmap de l’objet d’affichage par l’application.

Lorsque la propriété cacheAsBitmapMatrix est définie, l’application conserve une image bitmap en mémoire cache dont le rendu est basé sur cette matrice au lieu de la matrice d’affichage. (La matrice d’affichage est la valeur de la propriété transform.concatenatedMatrix de l’objet d’affichage.) Si cette matrice ne correspond pas à la matrice d’affichage, l’image bitmap est mise à l’échelle et subit une rotation si besoin est.

Un objet d’affichage dont la propriété cacheAsBitmapMatrix est définie n’est rendu que si la valeur de cacheAsBitmapMatrix change. L’image bitmap est mise à l’échelle ou subit une rotation conformément à la matrice d’affichage.

Si les deux types de rendu (processeur graphique et unité centrale) exploitent la propriété cacheAsBitmapMatrix , l’impact de cette dernière est généralement plus important sur le rendu basé sur le processeur graphique.

Remarque : Pour utiliser l’accélération matérielle, définissez l’option Rendu sur GPU dans l’onglet Général de la boîte de dialogue Paramètres de l’iPhone de Flash Professional CS5. (Vous pouvez également définir la propriété renderMode sur gpu dans le fichier descripteur d’application.)

Le code suivant utilise par exemple une représentation d’image bitmap non transformée de l’objet d’affichage :

matrix:Matrix = new Matrix(); // creates an identity matrix 
mySprite.cacheAsBitmapMatrix = matrix; 
mySprite.cacheAsBitmap = true;

Le code suivant utilise une représentation d’image bitmap qui correspond au rendu en cours :

mySprite.cacheAsBitmapMatrix = mySprite.transform.concatenatedMatrix; 
mySprite.cacheAsBitmap = true;

En règle générale, la matrice d’identité ( new Matrix() ) ou transform.concatenatedMatrix est suffisante. Vous disposez toutefois d’une autre matrice, telle la matrice de réduction d’échelle, pour envoyer par téléchargement une image bitmap différente au processeur graphique. Ainsi, l’exemple suivant applique une matrice cacheAsBitmapMatrix correspondant à une mise à l’échelle de 0,5 sur les axes x et y. L’objet bitmap utilisé par le processeur graphique est de taille inférieure. Ce dernier ajuste toutefois sa taille en fonction de la propriété transform.matrix de l’objet d’affichage :

matrix:Matrix = new Matrix(); // creates an identity matrix 
matrix.scale(0.5, 0.5); // scales the matrix 
mySprite.cacheAsBitmapMatrix = matrix; 
mySprite.cacheAsBitmap = true;

En règle générale, sélectionnez une matrice qui transforme l’objet d’affichage de sorte à obtenir la taille requise dans l’application. Par exemple, si l’application affiche la version bitmap du sprite à laquelle a été appliquée une mise à l’échelle de 0,5, utilisez une matrice qui produit une mise à l’échelle de 0,5. Si l’application affiche le sprite dans une taille supérieure aux dimensions en cours, utilisez une matrice dont le facteur de mise à l’échelle est identique.

La taille des objets d’affichage dont vous définissez la propriété cacheAsBitmapMatrix est limitée pour des raisons pratiques (1 020 pixels sur 1 020 pixels au plus). Le nombre total de pixels de tous les objets d’affichage dont la propriété cacheAsBitmapMatrix est définie est limité pour des raisons pratiques (environ quatre millions de pixels au plus).

Vous devez tenir d’un grand nombre de facteurs lorsque vous utilisez cacheAsBitmapMatrix et l’accélération matérielle. Il est important d’identifier les objets d’affichage pour lesquels cette propriété doit être définie. Pour plus d’informations sur l’utilisation de cette propriété, voir Accélération matérielle .

Vous pouvez utiliser la fonction de diagnostic de rendu sur GPU pour diagnostiquer l’utilisation du processeur graphique dans les versions de débogage de votre application. Pour plus d’informations, voir Débogage d’une application iPhone .

Notes relatives à la mise en réseau

L’utilisation des modèles d’URL suivants avec la fonction nativigateToURL() entraîne l’ouverture d’un document dans une application externe :

Modèle d’URL

Résultat de l’appel de nativeToURL()

Exemple

mailto :

Ouvre un nouveau message dans l’application de courrier électronique.

str = "mailto:test@example.com"; 
var urlReq:URLReq = new URLRequest(str); 
navigateToURL(urlReq);

sms:

Ouvre un message dans l’application SMS.

str = "sms:1-415-555-1212"; 
var urlReq:URLReq = new URLRequest(str); 
navigateToURL(urlReq);

tel:

Compose un numéro sur le téléphone (avec l’accord de l’utilisateur).

str = "tel:1-415-555-1212"; 
var urlReq:URLReq = new URLRequest(str); 
navigateToURL(urlReq);

Une application iPhone peut se fier à des certificats racine auto-signés installés pour authentifier un serveur au cours d’une transaction sécurisée, telle une requête https. Un serveur devrait envoyer non seulement le certificat feuille, mais également tous les certificats intermédiaires liés au certificat racine.