Elementy interfejsu API ActionScript przeznaczone do tworzenia aplikacji AIR na urządzenia mobilne

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.