Następujące elementy interfejsu API są dostępne tylko w aplikacjach AIR na urządzeniach mobilnych. Obecnie nie działają one w odtwarzaczu Flash Player ani w wersjach środowiska AIR dla komputerów stacjonarnych.
Interfejs API orientacji ekranu
Interfejs API orientacji ekranu umożliwia pracę orientacją stołu montażowego oraz telefonu iPhone:
-
Stage.autoOrients
— Określa, czy aplikacja automatycznie zmienia orientację stołu montażowego po obróceniu urządzenia. Właściwość ta przyjmuje wartość
true
w przypadku zaznaczenia opcji Automatyczna orientacja w oknie dialogowym ustawień dla telefonu iPhone w programie Flash Professional CS5. (Można również ustawić element
autoOrients
na wartość
true
w pliku deskryptora aplikacji.) Więcej informacji zawiera sekcja
Ustawienia aplikacji na telefon iPhone
. Automatyczną zmianę orientacji można anulować, dodając detektor zdarzenia
orientationChanging
dla obiektu Stage. Wywołanie metody
preventDefault()
tego obiektu zdarzenia powoduje anulowanie automatycznej zmiany orientacji.
W przypadku korzystania z funkcji automatycznej orientacji w celu uzyskania najlepszych wyników należy ustawić właściwość
align
stołu montażowego na następującą wartość:
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
-
Stage.deviceOrientation
— Fizyczna orientacja urządzenia. Wartości tej właściwości są zdefiniowane w klasie StageOrientation.
-
Stage.orientation
— Bieżąca orientacja stołu montażowego. Wartości tej właściwości są zdefiniowane w klasie StageOrientation.
-
Stage.supportsOrientationChange
— Wartość
true
w telefonie iPhone, oraz
false
w aplikacji AIR.
-
Stage.setOrientation()
— Ustawia orientację stołu montażowego. Metoda ta ma jeden parametr, który jest ciągiem znaków definiującym nową orientację stołu montażowego. Stałe w klasie StageOrientation definiują możliwe wartości parametru.
-
StageOrientation — Definiuje wartości orientacji stołu montażowego. Na przykład
StageOrientation.ROTATED_RIGHT
określa stół montażowy obracany w prawo względem domyślnej orientacji urządzenia.
-
StageOrientationEvent — Definiuje zdarzenia wywoływane przez stół montażowy wraz ze zmianą orientacji ekranu. Zdarzenie to występuje, gdy użytkownik obróci telefon iPhone. Istnieją dwa typy zdarzeń. Stół montażowy wywołuje zdarzenie
orientationChanging
z chwilą obrócenia urządzenia. Aby uniemożliwić zmianę orientacji stołu montażowego, należy wywołać metodę
preventDefault()
obiektu zdarzenia
orientationChanging
. Stół montażowy wywołuje zdarzenie
orientationChange
tuż po zmianie orientacji stołu montażowego.
Elementy interfejsu API związane z orientacją ekranu są obecnie użyteczne wyłącznie w aplikacjach AIR na urządzeniach mobilnych. W wypadku gdy ten sam kod źródłowy jest używany w aplikacji AIR dla urządzenia mobilnego i aplikacji AIR dla środowiska stacjonarnego, należy odczytać właściwość
Stage.supportsOrientationChange
, aby sprawdzić, czy te elementy interfejsu API są obsługiwane.
W poniższym przykładzie zaprezentowano sposób reagowania na obracanie urządzeniem przez użytkownika:
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;
}
W tym przykładzie, w przypadku różnych orientacji stołu montażowego zamiast funkcjonalnego kodu wstawiono komentarze.
Możliwa jest zmiana orientacji stołu montażowego przez wywołanie metody
setOrientation()
obiektu Stage. Ustawienie orientacji jest operacją asynchroniczną. Możliwe jest sprawdzenie, czy orientacja została przestawiona, przez wykrycie zdarzenia
orientationChange
. Poniższy kod ilustruje sposób ustawienia stołu montażowego w orientacji dla użytkowników praworęcznych.
stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE,
onOrientationChange);
stage.setOrientation(StageOrientation.ROTATED_RIGHT);
function onOrientationChange(event:StageOrientationEvent):void
{
// Code to handle the new Stage orientation
}
Obrót stołu montażowego powoduje zmianę jego wymiarów, czemu towarzyszy wywołanie zdarzenia
resize
przez obiekt Stage. W odpowiedzi na zdarzenie
resize
można zmienić wielkość i położenie obiektów wyświetlanych.
NativeApplication.systemIdleMode i SystemIdleMode
Właściwość
NativeApplication.systemIdleMode
pozwala zapobiegać przechodzeniu telefonu iPhone do trybu bezczynności. Domyślnie telefon iPhone przechodzi do trybu bezczynności w przypadku braku przez pewien czas interakcji z ekranem dotykowym. Tryb bezczynności może spowodować przyciemnienie ekranu. Ponadto może również spowodować przejście telefonu iPhone do trybu blokady. Właściwość tę można ustawić na jedną z dwu wartości:
-
SystemIdleMode.NORMAL
— Telefon iPhone działa zgodnie z normalnym stanem trybu bezczynności.
-
SystemIdleMode.KEEP_AWAKE
— Aplikacja podejmuje próbę zapobieżenia przechodzeniu telefonu iPhone do trybu bezczynności.
Ta funkcjonalność jest obsługiwana tylko na urządzeniach mobilnych. Nie jest obsługiwana w aplikacjach AIR działających w stacjonarnych systemach operacyjnych. W aplikacji działającej w środowisku stacjonarnym ustawianie właściwości
NativeApplication.systemIdleMode
nie odnosi skutku.
Poniższy kod ilustruje, w jaki sposób można wyłączyć tryb bezczynności telefonu iPhone:
NativeApplication.nativeApplication.systemIdleMode = SystemIdleMode.KEEP_AWAKE;
CameraRoll
Klasa CameraRoll umożliwia dodawanie obrazu do rolki z aparatu w telefonie iPhone. Metoda
addBitmapData()
dodaje obraz do rolki z aparatu w telefonie iPhone. Metoda ta ma jeden parametr,
bitmapData
. Parametr ten to obiekt BitmapData zawierający obraz, który jest dodawany do rolki z aparatu.
Funkcjonalność obiektu CameraRoll jest obsługiwana tylko na urządzeniach mobilnych. Nie jest obsługiwana w aplikacjach AIR działających w stacjonarnych systemach operacyjnych. W celu sprawdzenia w środowisku wykonawczym, czy aplikacja obsługuje funkcjonalność CamerRoll, należy sprawdzić statyczną właściwość
CameraRoll.supportsAddBitmapData
.
Po wywołaniu metody
addBitmapData()
obiekt CameraRoll wywołuje jedno z dwu zdarzeń:
-
complete
— Operacja została zakończona pomyślnie.
-
error
— Wystąpił błąd. Możliwe na przykład, że na telefonie iPhone brak wystarczającej ilości miejsca na przechowanie obrazu.
Poniższy kod dodaje obraz stołu montażowego (przechwycony obraz ekranu) do rolki z aparatu:
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
Właściwość
cacheAsBitmapMatrix
to obiekt Matrix definiujący sposób renderowania obiektu wyświetlanego, gdy właściwość
cacheAsBitmap
została ustawiona na wartość
true
. Aplikacja korzysta z tej matrycy jako matrycy transformacji podczas renderowania wersji bitmapy obiektu wyświetlanego.
W przypadku ustawienia właściwości
cacheAsBitmapMatrix
aplikacja zachowuje przechwycony obraz bitmapy zrenderowany przy użyciu tej matrycy zamiast matrycy wyświetlania. (Matryca wyświetlania to wartość
transform.concatenatedMatrix
obiektu wyświetlanego.) Jeśli ta matryca nie jest zgodna z matrycą wyświetlania, bitmapa jest skalowana i obracana odpowiednio do potrzeb.
Obiekt wyświetlany o ustawionej właściwości
cacheAsBitmapMatrix
jest renderowany wyłącznie, gdy wartość
cacheAsBitmapMatrix
ulegnie zmianie. Bitmapa jest skalowana lub obracana odpowiednio do potrzeb, tak aby była zgodna z matrycą wyświetlania.
Zarówno w przypadku renderowania bazującego na CPU, jak i bazującego na GPU właściwość
cacheAsBitmapMatrix
okazuje się przydatna, choć zazwyczaj więcej korzyści zauważa się w przypadku renderowania GPU.
Uwaga:
Aby użyć akceleracji sprzętowej, ustaw opcję Rendering dla GPU na karcie Ogólne w oknie dialogowym Ustawienia telefonu iPhone w programie Flash Professional CS5. (Można również ustawić właściwość
renderMode
na wartość
gpu
w pliku deskryptora aplikacji.)
Na przykład poniższy kod korzysta z niepoddanej transformacji reprezentacji bitmapy obiektu wyświetlanego:
matrix:Matrix = new Matrix(); // creates an identity matrix
mySprite.cacheAsBitmapMatrix = matrix;
mySprite.cacheAsBitmap = true;
Poniższy kod wykorzystuje reprezentację bitmapy odpowiadająca bieżącemu renderingowi:
mySprite.cacheAsBitmapMatrix = mySprite.transform.concatenatedMatrix;
mySprite.cacheAsBitmap = true;
Zazwyczaj wystarcza identyczna matryca (
new Matrix()
) lub
transform.concatenatedMatrix
. Można jednak użyć innej matrycy, takiej jak matryca przeskalowana w dół, w celu załadowania innej bitmapy do GPU. Na przykład w poniższym przykładzie zastosowano matrycę
cacheAsBitmapMatrix
przeskalowaną z użyciem współczynnika 0,5 względem osi x i y. Obiekt bitmapy używany przez GPU jest mniejszy, jednak GPU dostosowuje jego wielkość tak, by odpowiadała właściwości
transform.matrix
obiektu wyświetlanego:
matrix:Matrix = new Matrix(); // creates an identity matrix
matrix.scale(0.5, 0.5); // scales the matrix
mySprite.cacheAsBitmapMatrix = matrix;
mySprite.cacheAsBitmap = true;
W ogólnym przypadku należy wybrać matrycę przekształcającą obiekt wyświetlana na rozmiar, w którym będzie się ona pojawiać w aplikacji. Na przykład, jeśli w aplikacji wyświetlana jest wersja bitmapy ikonki przeskalowanej w dół o połowę, należy użyć matrycy skalującej w dół o połowę. Jeśli w aplikacji ikonka ma być wyświetlana jako większa niż jej obecny rozmiar, należy użyć matrycy skalującej w górę o zadany współczynnik.
Istnieje jednak praktyczny limit wielkości obiektów wyświetlanych, dla których ustawiono właściwość
cacheAsBitmapMatrix
. Limit ten to 1020 x 1020 pikseli. Istnieje też praktyczny limit łącznej liczby pikseli dla wszystkich obiektów wyświetlanych, dla których ustawiono właściwość
cacheAsBitmapMatrix
. Limit ten wynosi około czterech milionów pikseli.
Istnieje wiele kwestii, które należy wziąć pod uwagę, korzystając z właściwości
cacheAsBitmapMatrix
oraz akceleracji sprzętowej. Szczególnie ważne jest stwierdzenie, dla których obiektów wyświetlanych właściwość ta powinna być ustawiona, zaś dla których nie. Ważne informacje na temat używania tej właściwości zawiera sekcja
Przyspieszanie sprzętowe
.
Istnieje możliwość skorzystania z funkcji diagnostyki renderowania przy użyciu procesora GPU do diagnozowania wykorzystania procesora GPU w aplikacjach skompilowanych na potrzeby debugowania. Więcej informacji można znaleźć w sekcji
Debugowanie aplikacji na telefon iPhone
.
Uwagi dotyczące pracy w sieci
Użycie poniższych schematów adresów URL w funkcji
nativigateToURL()
powoduje otwarcie dokumentu w aplikacji zewnętrznej:
Schemat URL
|
Wynik wywołania funkcji nativeToURL()
|
Przykład
|
mailto:
|
Otwiera nową wiadomość w aplikacji pocztowej.
|
str = "mailto:test@example.com";
var urlReq:URLReq = new URLRequest(str);
navigateToURL(urlReq);
|
sms:
|
Otwiera wiadomość w aplikacji do edycji wiadomości SMS.
|
str = "sms:1-415-555-1212";
var urlReq:URLReq = new URLRequest(str);
navigateToURL(urlReq);
|
tel:
|
Wybiera numer na telefonie (z koniecznością potwierdzenia przez użytkownika).
|
str = "tel:1-415-555-1212";
var urlReq:URLReq = new URLRequest(str);
navigateToURL(urlReq);
|
Aplikacja na telefon iPhone może polegać na zainstalowanych certyfikatach głównych z podpisem własnym na potrzeby uwierzytelniania serwera w trakcie transakcji bezpiecznej, takiej jak żądanie https. Serwer powinien wysyłać nie tylko certyfikat końcowy (liść), lecz także certyfikaty pośrednie łączące z certyfikatem głównym.