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:
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:
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.