ActionScript-API:er för AIR-program för mobilenheter

Följande API:er är bara tillgängliga i AIR-program på mobilenheter. De fungerar för tillfället inte i Flash Player eller skrivbordsversioner av AIR.

API för skärmorientering

Med API:t för skärmorientering kan du arbeta med orienteringen för scenen och för iPhone-enheten:

  • Stage.autoOrients – Anger om programmet är inställt på att scenen automatiskt ska ändra orientering när enheten roteras. Den här egenskapen anges till true om alternativet Automatisk orientering markeras i dialogrutan iPhone-inställningar i Flash Professional CS5. (Du kan också ange elementet autoOrients till true i programbeskrivningsfilen.) Se Programinställningar för iPhone . Du kan avbryta automatisk omorientering genom att lägga till en orientationChanging -händelseavlyssnare för stage-objektet. Automatisk omorientering avbryts om metoden preventDefault() anropas för händelseobjektet.

    För att få bästa resultat när du använder autoorientering ska du ställa in egenskapen align på scenen enligt följande:

    stage.align = StageAlign.TOP_LEFT; 
    stage.scaleMode = StageScaleMode.NO_SCALE;
  • Stage.deviceOrientation – Enhetens fysiska orientering. Värden för den här egenskapen definieras av klassen StageOrientation.

  • Stage.orientation – Scenens aktuella orientering. Värden för den här egenskapen definieras av klassen StageOrientation.

  • Stage.supportsOrientationChange – Ange till true på iPhone-enheten och till false i ett AIR-program.

  • Stage.setOrientation() – Anger scenens orientering. Den här metoden har en parameter, som är en sträng som definierar den nya scenens orientering. Konstanterna i StageOrientation-klassen definierar tänkbara värden för parametern.

  • StageOrientation – Anger värden för scenens orientering. StageOrientation.ROTATED_RIGHT indikerar exempelvis en scen som är roterad åt höger relativt till standardorienteringen för enheten.

  • StageOrientationEvent – Anger händelser som skickas av scenen när orienteringen av scenen ändras. Den här händelsen uppstår när användaren vrider på iPhone-enheten. Det finns två typer av händelser. Scenen skickar händelsen orientationChanging när enhetens fysiska orientering ändras. Om du vill undvika att scenen ändrar orientering anropar du metoden preventDefault() för händelseobjektet orientationChanging . Scenen skickar händelsen orientationChange när ändringen av scenens orientering har slutförts.

API:t för skärmorientering är för tillfället bara användbart i AIR-program på mobilenheter. Om ett mobilt AIR-program och ett AIR-program för stationära datorer delar samma källkod använder du egenskapen Stage.supportsOrientationChange för att kontrollera om API:t stöds.

I följande exempel visas vad som ska hända när användaren roterar enheten:

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

I det här exemplet används kommentarer istället för kod för ändrad scenorientering.

Du ändrar orientering på scenen genom att anropa metoden setOrientation() för Stage-objektet. Att ställa in orienteringen är en asynkron åtgärd. Du kontrollerar när orienteringen är klar genom att slutföra avlyssningen av händelsen orientationChange . Med följande kod visas hur du ställer in scenen för högerhänt orientering:

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

När scenen roterar ändras dess storlek och Stage-objektet skickar en resize -händelse. Du kan ändra storlek på visningsobjekt, och ändra deras positioner på scenen, som svar på händelsen resize .

NativeApplication.systemIdleMode och SystemIdleMode

Egenskapen NativeApplication.systemIdleMode använder du för att förhindra att en iPhone försätts i vänteläge. Standard är att en iPhone försätts i vänteläge när inte någonting vidrör skärmen under en tidsperiod. Vänteläget kan resultera i att skärmen tonas ned. Det kan också leda till att iPhone kommer att låsa sig. Den här egenskapen kan ha ett av två möjliga värden:

  • SystemIdleMode.NORMAL – Det normala vänteläget används för iPhone.

  • SystemIdleMode.KEEP_AWAKE – Programmet försöker hindra att iPhone försätts i vänteläge.

Den här funktionen stöds bara på mobilenheter. Den stöds inte i AIR-program som körs i operativsystemet på en stationär dator. I ett program som körs på en stationär dator har egenskapen NativeApplication.systemIdleMode ingen effekt.

I följande kod visas hur vänteläget för iPhone inaktiveras:

NativeApplication.nativeApplication.systemIdleMode = SystemIdleMode.KEEP_AWAKE;

CameraRoll

Med klassen CameraRoll kan du lägga till en bild i iPhones filmrulle. Metoden addBitmapData() använder du för att lägga till en bild i iPhones filmrulle. Metoden har en parameter, bitmapData . Den här parametern är BitmapData-objektet som innehåller bilden som ska läggas in i filmrullen.

CameraRoll-funktionen stöds bara på mobilenheter. Den stöds inte i AIR-program som körs i operativsystemet på en stationär dator. Om du under körningen vill kontrollera att programmet har stöd för CameraRoll-funktionen ska du kontrollera den statiska egenskapen CameraRoll.supportsAddBitmapData .

Sedan du anropat metoden addBitmapData() skickas en av dessa båda händelser från CameraRoll-objektet:

  • complete – Operationen slutfördes på ett korrekt sätt.

  • error – Det har uppstått ett fel. Det kanske inte finns tillräckligt med utrymme på iPhone för att kunna lagra bilden.

Med följande kod läggs en bild av scenen (en skärmdump) in i filmrullen:

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

Egenskapen cacheAsBitmapMatrix är ett Matrix-objekt som definierar hur ett visningsobjekt ska återges när cacheAsBitmap är true . I programmet används den här matrisen som en omformningsmatris när bitmappsversionen av visningsobjektet återges.

När cacheAsBitmapMatrix är inställt kommer programmet att behålla en cache-lagrad bitmappsbild som är återgiven med matrisen, i stället för med visningsmatrisen. (Visningsmatrisen har värdet för transform.concatenatedMatrix i visningsobjektet.) Om matrisen inte överensstämmer med visningsmatrisen, kommer bitmappen att skalförändras och roteras om det skulle behövas.

Ett visningsobjekt där cacheAsBitmapMatrix är inställt kommer endast att återges när värdet för cacheAsBitmapMatrix ändras. Bitmappen skalförändras eller roteras för att anpassas mot visningsmatrisen.

Både processor- och grafikprocessoråtergivning tjänar på att egenskapen cacheAsBitmapMatrix används, men vanligtvis är fördelarna för grafikprocessoråtergivningen större.

Obs! Om du vill använda maskinvaruacceleration ska du ställa in Återgivning till GPU på fliken Allmänt i dialogrutan iPhone-inställningar i Flash Professional CS5. (Du kan också ange att egenskapen renderMode ska vara gpu i programbeskrivningsfilen.)

I följande exempelkod används en ej omformad bitmappsrepresentation av visningsobjektet:

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

I följande kod används en bitmappsrepresentation som matchar den aktuella återgivningen:

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

Vanligtvis är det identitetsmatrisen ( new Matrix() ) eller transform.concatenatedMatrix som används. Du kan emellertid använda en annan matris, till exempel en nedskalad matris, för att ladda upp en annan bitmapp till grafikprocessorn. I följande exempel används en cacheAsBitmapMatrix -matris som är skalförändrad med 0,5 på x- och y-axlarna. Bitmappsobjektet som används i grafikprocessorn är mindre, emellertid ändras storleken i grafikprocessorn så att det matchar egenskapen transform.matrix i visningsobjekt:

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

Generellt gäller att du bör välja en matris som omformar visningsobjektet till den storlek så som det kommer att visas i programmet. Om till exempel programmet visar bimappsversionen av sprite nedskalad till hälften, ska du använda en matris som skalas ned till hälften. Om sprite visas större än de aktuella dimensionerna i programmet, ska du använda en matris som skalas upp med samma faktor.

Det finns en praktisk begränsning för storleken på visningsobjekt för vilken egenskapen cacheAsBitmapMatrix är inställd. Begränsningen är 1020 gånger 1020 pixlar. Det finns även en praktisk begränsning för antalet pixlar för alla visningsobjekt som har egenskapen cacheAsBitmapMatrix inställd. Begränsningen är fyra miljoner pixlar.

Det finns mycket att tänka på när du använder cacheAsBitmapMatrix och maskinvaruacceleration. Det är viktigt att veta vilka visningsobjekt som ska ha egenskapen inställd och vilka som inte ska ha den. Viktig information om hur du använder den här egenskapen finns i Maskinvaruacceleration .

Du kan använda diagnostikfunktionen för grafikprocessoråtergivning för att analysera grafikprocessoranvändningen i felsökningsversioner av ditt program. Mer information finns i Felsöka ett iPhone-program .

Nätverkskommentarer

Om du använder följande URL-schema med funktionen nativigateToURL() kommer ett dokument att öppnas i ett externt program:

URL-schema

Resultat av anrop till nativeToURL()

Exempel

mailto:

Öppnar ett nytt meddelande i e-postprogrammet.

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

sms:

Öppnar ett meddelande i textmeddelandeprogrammet.

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

tel:

Ringer upp ett telefonnummer med telefonen (om användaren godkänner det).

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

Ett iPhone-program kan förlita sig på installerade självsignerade rotcertifikat för serverautentisering under en säker transaktion, till exempel vid en https-förfrågan. En server ska inte bara skicka bladcertifikatet utan även alla mellanliggande certifikatskedjor till rotcertifikatet.