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.