ActionScript-APIs speziell für mobile AIR-Anwendungen

Die folgenden APIs sind nur in AIR-Anwendungen für mobile Geräte verfügbar. Sie funktionieren zurzeit nicht in Flash Player oder Desktopversionen von AIR.

Bildschirmausrichtungs-API

Mithilfe der Bildschirmausrichtungs-API können Sie mit der Ausrichtung der Bühne und des iPhone arbeiten:

  • Stage.autoOrients – Ob die Anwendung so eingestellt ist, dass die Bühne automatisch neu ausgerichtet wird, wenn das Gerät gedreht wird. Diese Eigenschaft hat den Wert true , wenn im Flash Professional CS5-Dialogfeld „iPhone-Einstellungen“ die Option „Automatische Ausrichtung“ aktiviert ist. (Sie können auch das autoOrients -Element in der Anwendungsdeskriptordatei auf true einstellen.) Siehe iPhone-Anwendungseinstellungen . Sie können die automatische Neuausrichtung abbrechen, indem Sie einen orientationChanging -Ereignis-Listener für das Stage-Objekt hinzufügen. Der Aufruf der preventDefault() -Methode für dieses Ereignisobjekt bricht die automatische Neuausrichtung ab.

    Wenn Sie die automatische Ausrichtung verwenden, stellen Sie die align -Eigenschaft folgendermaßen ein, um beste Ergebnisse zu erzielen:

    stage.align = StageAlign.TOP_LEFT; 
    stage.scaleMode = StageScaleMode.NO_SCALE;
  • Stage.deviceOrientation – Die physische Ausrichtung des Geräts. Die StageOrientation-Klasse definiert Werte für diese Eigenschaft.

  • Stage.orientation – Die aktuelle Ausrichtung der Bühne. Die StageOrientation-Klasse definiert Werte für diese Eigenschaft.

  • Stage.supportsOrientationChange – Hat auf dem iPhone den Wert true und in einer AIR-Anwendung den Wert false .

  • Stage.setOrientation() – Legt die Ausrichtung der Bühne fest. Diese Methode hat einen Parameter, einen String, der die neue Bühnenausrichtung definiert. Die Konstanten in der StageOrientation-Klasse definieren mögliche Werte für den Parameter.

  • StageOrientation – Definiert Werte für die Bühnenausrichtung. StageOrientation.ROTATED_RIGHT gibt zum Beispiel eine Bühne an, die in Relation zur Standardausrichtung des Geräts nach rechts gedreht ist.

  • StageOrientationEvent – Definiert Ereignisse, die die Bühne absetzt, wenn sich die Ausrichtung des Bildschirms ändert. Dieses Ereignis tritt auf, wenn der Benutzer das iPhone dreht. Es gibt zwei Arten von Ereignissen. Die Bühne setzt das orientationChanging -Ereignis ab, wenn das Gerät gedreht wird. Um die Neuausrichtung der Bühne zu verhindern, rufen Sie die preventDefault() -Methode des orientationChanging -Ereignisobjekts auf. Die Bühne setzt das orientationChange -Ereignis ab, wenn die Neuausrichtung der Bühne abgeschlossen ist.

Derzeit ist die Bildschirmausrichtungs-API nur bei AIR-Anwendungen für mobile Geräte sinnvoll. Wenn Quellcode für eine mobile AIR-Anwendung und eine Desktop-AIR-Anwendung genutzt wird, überprüfen Sie mit der Stage.supportsOrientationChange -Eigenschaft, ob die API unterstützt wird.

Das folgende Beispiel zeigt, wie auf die Drehung des Geräts durch den Benutzer reagiert wird:

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

In diesem Beispiel stehen bei unterschiedlichen Bühnenausrichtungen Kommentare anstelle funktionierenden Codes.

Sie können die Ausrichtung der Bühne ändern, indem Sie die setOrientation() -Methode des Stage-Objekts aufrufen. Das Festlegen der Ausrichtung ist ein asynchroner Vorgang. Sie können überprüfen, wann die Ausrichtungsänderung abgeschlossen ist, indem Sie einen Listener für das orientationChange -Ereignis verwenden. Mit dem folgenden Code wird die Bühne an der rechten Seite ausgerichtet:

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

Während die Bühne gedreht wird, ändert sich die Größe und das Stage-Objekt setzt ein resize -Ereignis ab. Als Antwort auf das resize -Ereignis können Sie die Größe und Position der Anzeigeobjekte auf der Bühne ändern.

NativeApplication.systemIdleMode und SystemIdleMode

Mit der NativeApplication.systemIdleMode -Eigenschaft können Sie verhindern, dass das iPhone in den Leerlaufmodus wechselt. Standardmäßig wechselt das iPhone in den Leerlaufmodus, wenn der Touchscreen für einen bestimmten Zeitraum nicht verwendet wurde. Im Leerlaufmodus kann der Bildschirm dunkler werden. Möglicherweise wird das iPhone auch in den gesperrten Modus versetzt. Diese Eigenschaft kann auf einen von zwei Werten eingestellt werden:

  • SystemIdleMode.NORMAL – Das iPhone folgt dem normalen Verhalten für den Leerlaufmodus.

  • SystemIdleMode.KEEP_AWAKE – Die Anwendung versucht zu verhindern, dass das iPhone in den Leerlaufmodus wechselt.

Diese Funktionen wird nur auf mobilen Geräten unterstützt. In AIR-Anwendungen, die unter Desktopbetriebssystemen ausgeführt werden, wird sie nicht unterstützt. Wenn eine Anwendung auf dem Desktop ausgeführt wird, hat das Einstellen der NativeApplication.systemIdleMode -Eigenschaft keine Auswirkungen.

Der folgende Code zeigt, wie der iPhone-Leerlaufmodus deaktiviert wird:

NativeApplication.nativeApplication.systemIdleMode = SystemIdleMode.KEEP_AWAKE;

CameraRoll

Mit der CameraRoll-Klasse können Sie der iPhone Camera Roll ein Bild hinzufügen. Die addBitmapData() -Methode fügt ein Bild der iPhone Camera Roll hinzu. Die Methode weist einen Parameter auf, bitmapData . Dieser Parameter ist das BitmapData-Objekt, welches das Bild enthält, das der Camera Roll hinzugefügt werden soll.

Die CameraRoll-Funktion wird nur auf mobilen Geräten unterstützt. In AIR-Anwendungen, die unter Desktopbetriebssystemen ausgeführt werden, wird sie nicht unterstützt. Um zur Laufzeit festzustellen, ob die Anwendung die CameraRoll-Funktionalität unterstützt, überprüfen Sie die statische CameraRoll.supportsAddBitmapData -Eigenschaft.

Nachdem Sie die addBitmapData() -Methode aufgerufen haben, setzt das CameraRoll-Objekt eines von zwei Ereignissen ab:

  • complete – Der Vorgang wurde erfolgreich abgeschlossen.

  • error – Es ist ein Fehler aufgetreten. Es könnte zum Beispiel sein, dass auf dem iPhone nicht genügend Speicherplatz zum Speichern des Bildes frei ist.

Mit dem folgenden Code wird ein Bild der Bühne (eine Bildschirmerfassung) der Camera Roll hinzugefügt:

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

Die cacheAsBitmapMatrix -Eigenschaft ist ein Matrix-Objekt, das definiert, wie ein Anzeigeobjekt dargestellt wird, wenn cacheAsBitmap auf true eingestellt ist. Die Anwendung verwendet diese Matrix als Transformationsmatrix, wenn die Bitmapversion des Anzeigeobjekts dargestellt wird.

Wenn cacheAsBitmapMatrix festgelegt wurde, behält die Anwendung ein zwischengespeichertes Bitmapbild, das mit dieser Matrix gerendert wurde, anstelle der Anzeigematrix. (Die Anzeigematrix ist der Wert der transform.concatenatedMatrix -Eigenschaft des Anzeigeobjekts.) Wenn diese Matrix nicht mit der Anzeigematrix übereinstimmt, wird die Bitmap wie erforderlich skaliert und gedreht.

Ein Anzeigeobjekt, dessen cacheAsBitmapMatrix -Eigenschaft festgelegt wurde, wird nur gerendert, wenn sich der Wert von cacheAsBitmapMatrix ändert. Die Bitmap wird skaliert oder gedreht, um der Anzeigematrix zu entsprechen.

Sowohl CPU- als auch GPU-basiertes Rendering profitiert von der Verwendung der cacheAsBitmapMatrix -Eigenschaft, das GPU-Rendering jedoch in größerem Maße.

Hinweis: Um die Hardwarebeschleunigung zu verwenden, stellen Sie im Dialogfeld „iPhone-Einstellungen“ von Flash Professional CS5 auf der Registerkarte „Allgemein“ für „Rendering“ die Option „GPU“ ein. (Oder legen Sie die renderMode -Eigenschaft in der Anwendungsdeskriptordatei auf gpu fest.)

Der folgende Code verwendet zum Beispiel eine nicht transformierte Bitmapdarstellung des Anzeigeobjekts:

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

Der folgende Code verwendet eine Bitmapdarstellung, die dem aktuellen Rendering entspricht:

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

Normalerweise reicht die Identitätsmatrix ( new Matrix() ) oder transform.concatenatedMatrix aus. Sie können jedoch auch eine andere Matrix, zum Beispiel eine verkleinerte Matrix, verwenden, um eine andere Bitmap an die GPU hochzuladen. Der folgende Code wendet zum Beispiel eine cacheAsBitmapMatrix -Matrix an, die um den Faktor 0,5 für die x- und y-Achsen skaliert wurde. Das Bitmapobjekt, das die GPU verwendet, ist kleiner; die GPU passt die Größe jedoch an, um der transform.matrix -Eigenschaft des Anzeigeobjekts zu entsprechen:

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

Im Allgemeinen wählen Sie eine Matrix, die das Anzeigeobjekt auf die Größe transformiert, in der es in der Anwendung erscheint. Wenn Ihre Anwendung zum Beispiel die Bitmapversion eines Sprites, das um die Hälfte verkleinert wurde, anzeigt, verwenden Sie eine Matrix, die um die Hälfte verkleinert wurde. Wenn die Anwendung das Sprite größer als mit den aktuellen Abmessungen anzeigt, verwenden Sie eine Matrix, die es um den entsprechenden Faktor vergrößert.

Es gibt in der Praxis eine Grenze für die Größe von Anzeigeobjekten, für die die cacheAsBitmapMatrix -Eigenschaft eingestellt ist. Die Grenze liegt bei 1020 mal 1020 Pixel. Es gibt in der Praxis eine Grenze für die Gesamtanzahl der Pixel aller Anzeigeobjekte, für die die cacheAsBitmapMatrix -Eigenschaft eingestellt ist. Diese Grenze liegt bei ungefähr vier Millionen Pixel.

Bei der Verwendung von cacheAsBitmapMatrix und Hardwarebeschleunigung müssen verschiedene Überlegungen berücksichtigt werden. Es ist wichtig zu wissen, für welche Anzeigeobjekte diese Eigenschaft festgelegt werden soll und für welche nicht. Wichtige Informationen zur Verwendung dieser Eigenschaft finden Sie im Abschnitt Hardwarebeschleunigung .

Mit der Diagnosefunktion für die GPU-Darstellung können Sie die GPU-Nutzung in Debug-Versionen Ihrer Anwendung testen. Weitere Informationen finden Sie unter Debuggen von iPhone-Anwendungen .

Hinweise zu Netzwerkverbindungen

Bei Verwendung der folgenden URL-Schemas mit der nativigateToURL() -Funktion wird ein Dokument in einer externen Anwendung geöffnet:

URL-Schema

Ergebnis des Aufrufs von nativeToURL()

Beispiel für

mailto:

Öffnet eine neue Nachricht in der Mail-Anwendung.

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

sms:

Öffnet eine Nachricht in der Textnachrichtanwendung.

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

tel:

Wählt eine Telefonnummer (mit Genehmigung durch den Benutzer).

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

Eine iPhone-Anwendung ist während einer sicheren Transaktion, zum Beispiel einer https-Anfrage, unter Umständen auf installierte selbst signierte Stammzertifikate für die Serverauthentifizierung angewiesen. Ein Server sollte nicht nur das Endzertifikat senden, sondern auch alle Zwischenzertifikate, die die Verkettung mit dem Stammzertifikat bilden.