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