API's van ActionScript die specifiek zijn voor mobiele AIR-toepassingen

De volgende API's zijn alleen beschikbaar in AIR-toepassingen op mobiele apparaten. Deze API's zijn momenteel niet functioneel in Flash Player of bureaubladversies van AIR.

API voor schermoriëntatie

Met de API voor schermoriëntatie kunt u met de oriëntatie van het werkgebied en de iPhone werken:

  • Stage.autoOrients — Bepaalt of de oriëntatie van het werkgebied in de toepassing automatisch wordt aangepast wanneer het apparaat wordt gedraaid. Deze eigenschap wordt ingesteld op true wanneer de optie Automatische oriëntatie is geselecteerd in het dialoogvenster iPhone-instellingen van Flash Professional CS5. (U kunt ook het element autoOrients instellen op true in het descriptorbestand van de toepassing.) Zie Instellingen voor iPhone-toepassingen . U kunt de automatische heroriëntatie annuleren door de gebeurtenislistener orientationChanging voor het Stage-object toe te voegen. Wanneer de preventDefault() -methode van dit gebeurtenisobject wordt aangeroepen, wordt de automatische heroriëntatie geannuleerd.

    Als u de oriëntatie automatisch wilt wijzigen, kunt u de eigenschap align van het object Stage het beste als volgt instellen:

    stage.align = StageAlign.TOP_LEFT; 
    stage.scaleMode = StageScaleMode.NO_SCALE;
  • Stage.deviceOrientation —De fysieke oriëntatie van het apparaat. In de klasse StageOrientation worden de waarden voor deze eigenschap gedefinieerd.

  • Stage.orientation —De huidige oriëntatie van het werkgebied. In de klasse StageOrientation worden de waarden voor deze eigenschap gedefinieerd.

  • Stage.supportsOrientationChange —Ingesteld op true op de iPhone en false in een AIR-toepassing.

  • Stage.setOrientation() —Hiermee wordt de oriëntatie van het werkgebied ingesteld. Deze methode heeft één parameter, namelijk een tekenreeks die de nieuwe oriëntatie van het werkgebied definieert. De constante waarden in de klasse StageOrientation definiëren de mogelijke waarden voor de parameter.

  • StageOrientation—Hierin worden de waarden voor de oriëntatie van het werkgebied gedefinieerd. StageOrientation.ROTATED_RIGHT geeft bijvoorbeeld een werkgebied aan dat naar rechts is gedraaid ten opzichte van de standaardoriëntatie van het apparaat.

  • StageOrientationEvent—Hierin worden gebeurtenissen gedefinieerd die het werkgebied verzendt wanneer de oriëntatie van het scherm verandert. Deze gebeurtenis treedt op wanneer de gebruiker de iPhone draait. Er zijn twee soorten gebeurtenissen. Het werkgebied verzendt de gebeurtenis orientationChanging op het moment dat het apparaat wordt gedraaid. Als u wilt voorkomen dat het werkgebied opnieuw wordt georiënteerd, roept u de methode preventDefault() van het gebeurtenisobject orientationChanging aan. Het werkgebied verzendt de gebeurtenis orientationChange als de heroriëntatie van het werkgebied is voltooid.

De schermoriëntatie-API kan momenteel alleen worden gebruikt in AIR-toepassingen op mobiele apparaten. Als er broncode wordt gedeeld door een mobiele AIR-toepassing en een AIR-desktoptoepassing, kunt u met de eigenschap Stage.supportsOrientationChange controleren of de API wordt ondersteund.

In het volgende voorbeeld wordt geïllustreerd hoe u moet reageren als de gebruiker het apparaat draait:

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 dit voorbeeld worden er als er sprake is van verschillende oriëntaties van het werkgebied opmerkingen gegeven in plaats van functionele code.

U kunt de oriëntatie van het werkgebied wijzigen door de methode setOrientation() van het object Stage aan te roepen. Het instellen van de oriëntatie is een asynchrone bewerking. Met een listener voor de gebeurtenis orientationChange kunt u controleren of het wijzigen van de oriëntatie is voltooid. De volgende code geeft aan hoe u het werkgebied op de rechteroriëntatie instelt:

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

Als het object Stage wordt gedraaid, veranderen de afmetingen van het object en wordt een resize -gebeurtenis verzonden. Als reactie op deze resize -gebeurtenis kunt u de positie en de afmetingen van objecten op het werkgebied aanpassen.

NativeApplication.systemIdleMode en SystemIdleMode

Met de eigenschap NativeApplication.systemIdleMode voorkomt u dat de inactieve modus van de iPhone wordt geactiveerd. Standaard wordt de inactieve modus van een iPhone geactiveerd wanneer het scherm enige tijd lang niet wordt aangeraakt. In deze modus wordt het scherm wellicht gedimd. Ook kan de iPhone worden vergrendeld. Voor deze eigenschap kan een van twee waarden worden gesteld:

  • SystemIdleMode.NORMAL : de iPhone volgt het normale gedrag voor de inactieve modus.

  • SystemIdleMode.KEEP_AWAKE : de toepassing probeert te voorkomen dat de inactieve modus wordt geactiveerd voor de iPhone.

Deze functionaliteit wordt alleen op mobiele apparaten ondersteund. De functionaliteit wordt niet ondersteund in AIR-toepassingen die op desktopbesturingssystemen worden uitgevoerd. Het instellen van de eigenschap NativeApplication.systemIdleMode in toepassingen die op een desktop worden uitgevoerd, heeft geen enkel effect.

De volgende code toont hoe u de inactieve modus van de iPhone kunt uitschakelen:

NativeApplication.nativeApplication.systemIdleMode = SystemIdleMode.KEEP_AWAKE;

CameraRoll

Met de klasse CameraRoll voegt u een afbeelding toe aan de iPhone-camerarol. De addBitmapData() -methode voegt een afbeelding toe aan de iPhone-camerarol. De methode heeft één parameter, namelijk bitmapData . Deze parameter is het BitmapData-object met de afbeelding die u aan de camerarol wilt toevoegen.

De CamaraRoll-functionaliteit wordt alleen op mobiele apparaten ondersteund. De functionaliteit wordt niet ondersteund in AIR-toepassingen die op desktopbesturingssystemen worden uitgevoerd. Als u tijdens uitvoering wilt controleren of uw toepassing de CamerRoll-functionaliteit ondersteunt, controleert u de statische eigenschap CameraRoll.supportsAddBitmapData .

Het CameraRoll-object verzendt een van twee gebeurtenissen nadat u de addBitmapData() -methode hebt aangeroepen:

  • complete : de bewerking is voltooid.

  • error : er is een fout opgetreden. Het kan bijvoorbeeld zijn dat er onvoldoende ruimte beschikbaar is op de iPhone om de afbeelding op te slaan.

Met de volgende code voegt u een afbeelding uit het werkgebied (een schermafbeelding) toe aan de camerarol:

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

De eigenschap cacheAsBitmapMatrix is een Matrix-object dat bepaalt hoe een weergaveobject wordt gerenderd wanneer cacheAsBitmap is ingesteld op true . De toepassing gebruikt deze matrix als een transformatiematrix wanneer de bitmapversie van het weergaveobject wordt gerenderd.

Wanneer cacheAsBitmapMatrix is ingesteld, behoudt de toepassing een bitmapafbeelding in de cache die is gerenderd met die matrix in plaats van met de weergavematrix. (De weergavematrix is de waarde van de transform.concatenatedMatrix van het weergaveobject.) Als deze matrix niet overeenkomt met de weergavematrix, wordt de bitmap naar behoefte geschaald en geroteerd.

Een weergaveobject waarvoor cacheAsBitmapMatrix is ingesteld, wordt alleen gerenderd wanneer de waarde van cacheAsBitmapMatrix verandert. De bitmap wordt in afstemming met de weergavematrix geschaald of geroteerd.

Zowel op CPU als op GPU gebaseerde rendering profiteert van het gebruik van de eigenschap cacheAsBitmapMatrix , alhoewel GPU er over het algemeen meer voordeel van heeft.

Opmerking: Als u hardwareversnelling wilt gebruiken, stelt u Rendering in op GPU in het tabblad Algemeen van het dialoogvenster iPhone-instellingen in Flash Professional CS5. (Of u kunt de eigenschap renderMode instellen op gpu in het descriptorbestand van de toepassing.)

De volgende code maakt bijvoorbeeld gebruik van een niet-getransformeerde bitmaprepresentatie van het weergaveobject:

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

De volgende code gebruikt een bitmaprepresentatie die overeenkomt met de huidige rendering:

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

Vaak is de identiteitsmatrix ( new Matrix() ) of transform.concatenatedMatrix voldoende. U kunt echter een andere matrix, zoals een in schaal verkleinde matrix, gebruiken om een andere bitmap te uploaden naar de GPU. Het volgende voorbeeld past bijvoorbeeld een cacheAsBitmapMatrix -matrix toe die met een factor van 0,5 op de x- en y-as is geschaald. Het door de GPU gebruikte bitmapobject is kleiner, maar de GPU past het formaat aan de eigenschap transform.matrix van het weergaveobject aan:

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

Over het algemeen geldt dat u een matrix moet kiezen die het weergaveobject transformeert naar het weergaveformaat in de toepassing. Als in uw toepassing bijvoorbeeld de half zo kleine bitmapversie van de sprite wordt weergegeven, gebruikt u een matrix die de sprite verkleint met de factor 0,5. Als de sprite in uw toepassing echter groter dan het huidige formaat wordt weergegeven, gebruikt u een matrix die de sprite met de desbetreffende factor vergroot.

Er geldt een praktische limiet voor de grootte van weergaveobjecten waarvoor de eigenschap cacheAsBitmapMatrix is ingesteld, namelijk 1020 x 1020 pixels. Er geldt ook een praktische limiet voor het totale aantal pixels voor alle weergaveobjecten waarvoor de eigenschap cacheAsBitmapMatrix is ingesteld. Deze limiet bedraagt ongeveer vier miljoen pixels.

U dient vele aspecten te overwegen wanneer u cacheAsBitmapMatrix en hardwareversnelling gebruikt. Het is belangrijk dat u weet voor welke weergaveobjecten u deze eigenschap moet instellen en voor welke weergaveobjecten u dat niet moet doen. Zie Hardwareversnelling voor belangrijke informatie over het gebruik van deze eigenschap.

U kunt de diagnostische functie voor GPU-rendering gebruiken voor het diagnosticeren van het GPU-gebruik in foutopsporingsversies van uw toepassing. Zie Fouten opsporen in een iPhone-toepassing voor meer informatie.

Opmerkingen over netwerken

Met de volgende URL-schema's in combinatie met de functie nativigateToURL() wordt een document in een externe toepassing geopend:

URL-schema

Resultaat van het aanroepen van nativeToURL()

Voorbeeld

mailto:

Hiermee wordt een nieuw bericht in de e-mailtoepassing geopend.

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

sms:

Hiermee wordt een bericht in de toepassing voor sms-berichten geopend.

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

tel:

Hiermee wordt een telefoonnummer op de telefoon gekozen (met goedkeuring van de gebruiker).

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

Een iPhone-toepassing kan gebruik maken van geïnstalleerde zelfondertekende hoofdcertificaten voor verificatie van de server tijdens een beveiligde transactie, zoals een http-verzoek. Een server moet niet alleen het certificaat verzenden, maar ook alle tussenliggende certificaten die aan het hoofdcertificaat zijn gekoppeld.