Le API seguenti sono disponibili solo in applicazioni AIR su dispositivi mobili. Al momento non possono essere utilizzate nelle versioni Flash Player o desktop di AIR.
API di orientamento dello schermo
L'API di orientamento dello schermo consente di utilizzare l'orientamento dello stage e dell'iPhone:
-
Stage.autoOrients
: indica se l'applicazione è impostata per fare in modo che lo stage si riorienti automaticamente quando il dispositivo viene ruotato. Questa proprietà è impostata su
true
quando nella finestra di dialogo delle impostazioni iPhone di Flash Professional CS5 è selezionata l'opzione di orientamento automatico. (Potete anche impostare l'elemento
autoOrients
su
true
nel file descrittore dell'applicazione.) Vedete
Impostazioni applicazione iPhone
. Potete annullare il riorientamento automatico aggiungendo un listener dell'evento
orientationChanging
per l'oggetto Stage. La chiamata al metodo
preventDefault()
di questo oggetto evento annulla il riorientamento automatico.
Quando utilizzate l'orientamento automatico, per risultati ottimali impostate la proprietà
align
dello Stage sui valori seguenti:
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
-
Stage.deviceOrientation
: indica l'orientamento fisico del dispositivo. La classe StageOrientation definisce i valori per questa proprietà.
-
Stage.orientation
: indica l'orientamento attuale dello stage. La classe StageOrientation definisce i valori per questa proprietà.
-
Stage.supportsOrientationChange
: impostato su
true
sull'iPhone e su
false
in un'applicazione AIR.
-
Stage.setOrientation()
: consente di impostare l'orientamento dello stage. Questo metodo dispone di un solo parametro, che è una stringa che definisce il nuovo orientamento dello stage. Le costanti nella classe StageOrientation definiscono i possibili valori del parametro.
-
StageOrientation: definisce i valori di orientamento dello stage. Ad esempio,
StageOrientation.ROTATED_RIGHT
indica uno stage ruotato a destra rispetto all'orientamento predefinito del dispositivo.
-
StageOrientationEvent: definisce eventi inviati dallo Stage quando l'orientamento dello schermo cambia. Questo evento si verifica quando l'utente ruota l'iPhone. Esistono due tipi di eventi. Lo Stage invia l'evento
orientationChanging
quando il dispositivo viene ruotato. Per impedire che lo stage venga riorientato, chiamate il metodo
preventDefault()
dell'oggetto evento
orientationChanging
. Lo Stage invia l'evento
orientationChange
dopo che lo stage è stato riorientato.
Attualmente, l'API di orientamento dello schermo è utile solo nelle applicazioni AIR su dispositivi mobili. Se un'applicazione AIR per dispositivi mobili e un'applicazione AIR desktop condividono il codice di origine, utilizzate la proprietà
Stage.supportsOrientationChange
per verificare se l'API è supportata.
Nell'esempio seguente viene mostrato come rispondere alla rotazione del dispositivo da parte dell'utente:
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 questo esempio, in caso di orientamenti stage diversi, sono presenti commenti anziché codice funzionante.
Potete cambiare l'orientamento dello stage chiamando il metodo
setOrientation()
dell'oggetto Stage. L'impostazione dell'orientamento è un'operazione asincrona. Potete verificare quando l'orientamento è completato intercettando l'evento
orientationChange
. Il codice seguente mostra come impostare lo stage sull'orientamento destro:
stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE,
onOrientationChange);
stage.setOrientation(StageOrientation.ROTATED_RIGHT);
function onOrientationChange(event:StageOrientationEvent):void
{
// Code to handle the new Stage orientation
}
Mentre lo Stage ruota si ridimensiona e l'oggetto Stage invia un evento
resize
. Potete ridimensionare e riposizionare gli oggetti di visualizzazione sullo Stage in risposta all'evento
resize
.
NativeApplication.systemIdleMode e SystemIdleMode
La proprietà
NativeApplication.systemIdleMode
impedisce che l'iPhone entri nella modalità di inattività. Per impostazione predefinita, un iPhone entra nella modalità di inattività se lo schermo sensibile non viene utilizzato per un certo periodo di tempo. La modalità di inattività può causare la riduzione della luminosità dello schermo. Inoltre, può causare l'attivazione della modalità di blocco. Questa proprietà può essere impostata su uno di due valori:
-
SystemIdleMode.NORMAL
: l'iPhone segue il normale comportamento della modalità di inattività.
-
SystemIdleMode.KEEP_AWAKE
: l'applicazione tenta di impedire che l'iPhone entri nella modalità di inattività.
Questa funzionalità è supportata solo sui dispositivi mobili e non nelle applicazioni AIR in esecuzione su sistemi operativi desktop. In un'applicazione eseguita sul desktop, l'impostazione della proprietà
NativeApplication.systemIdleMode
non ha alcun effetto.
Nel codice seguente viene mostrato come disattivare la modalità di inattività dell'iPhone:
NativeApplication.nativeApplication.systemIdleMode = SystemIdleMode.KEEP_AWAKE;
CameraRoll
La classe CameraRoll consente di aggiungere un'immagine al rullino fotografico dell'iPhone. Il metodo
addBitmapData()
aggiunge un'immagine al rullino fotografico dell'iPhone. Il metodo dispone di un solo parametro,
bitmapData
, che rappresenta l'oggetto BitmapData contenente l'immagine da aggiungere al rullino fotografico.
La funzionalità CameraRoll è supportata solo sui dispositivi mobili e non nelle applicazioni AIR in esecuzione su sistemi operativi desktop. Per verificare in fase di runtime se l'applicazione supporta la funzionalità CameraRoll, controllate la proprietà
CameraRoll.supportsAddBitmapData
statica.
Dopo aver chiamato il metodo
addBitmapData()
, l'oggetto CameraRoll invia uno di due eventi:
-
complete
: l'operazione è terminata correttamente.
-
error
: si è verificato un errore. Ad esempio, è possibile che la quantità di memoria disponibile sull'iPhone non sia sufficiente per memorizzare l'immagine.
Il codice seguente aggiunge un'immagine dello stage (un'acquisizione schermo) al rullino fotografico:
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
La proprietà
cacheAsBitmapMatrix
è un oggetto Matrix che definisce in che modo viene eseguito il rendering di un oggetto di visualizzazione quando
cacheAsBitmap
è impostata su
true
. L'applicazione utilizza questa matrice come una matrice di trasformazione quando esegue il rendering della versione bitmap dell'oggetto di visualizzazione.
Se
cacheAsBitmapMatrix
è impostata, l'applicazione conserva un'immagine della bitmap memorizzata nella cache di cui effettua il rendering utilizzando questa matrice, anziché la matrice di visualizzazione. (La matrice di visualizzazione è il valore della proprietà
transform.concatenatedMatrix
dell'oggetto di visualizzazione.) Se questa matrice non corrisponde alla matrice di visualizzazione, la bitmap viene ridimensionata e ruotata in base alle esigenze.
Per un oggetto di visualizzazione con impostata la proprietà
cacheAsBitmapMatrix
, il rendering viene eseguito solo quando il valore di
cacheAsBitmapMatrix
cambia. La bitmap viene ridimensionata e ruotata come appropriato in modo che sia conforme alla matrice di visualizzazione.
I rendering basati su CPU e GPU traggono entrambi vantaggio dall'utilizzo della proprietà
cacheAsBitmapMatrix
, anche se i benefici per il rendering GPU sono maggiori.
Nota:
Per utilizzare l'accelerazione hardware, impostate il Rendering su GPU nella scheda Generali della finestra di dialogo Impostazioni iPhone in Flash Professional CS5. (In alternativa, impostate la proprietà
renderMode
su
gpu
nel file descrittore dell'applicazione.)
Ad esempio, il codice seguente utilizza una rappresentazione bitmap non trasformata dell'oggetto di visualizzazione:
matrix:Matrix = new Matrix(); // creates an identity matrix
mySprite.cacheAsBitmapMatrix = matrix;
mySprite.cacheAsBitmap = true;
Il codice seguente utilizza una rappresentazione bitmap che corrisponde al rendering corrente:
mySprite.cacheAsBitmapMatrix = mySprite.transform.concatenatedMatrix;
mySprite.cacheAsBitmap = true;
In genere, la matrice dell'identità (
new Matrix()
) o
transform.concatenatedMatrix
è sufficiente. Tuttavia, potete utilizzare un'altra matrice, ad esempio una matrice ridotta, per caricare una bitmap diversa nella GPU. L'esempio seguente applica una matrice
cacheAsBitmapMatrix
che è ridotta di un fattore 0,5 sugli assi x e y. Le dimensioni dell'oggetto bitmap utilizzato dalla GPU sono inferiori, tuttavia la GPU regola le sue dimensioni in modo che corrispondano alla proprietà
transform.matrix
dell'oggetto di visualizzazione:
matrix:Matrix = new Matrix(); // creates an identity matrix
matrix.scale(0.5, 0.5); // scales the matrix
mySprite.cacheAsBitmapMatrix = matrix;
mySprite.cacheAsBitmap = true;
In generale, scegliete una matrice che trasformi l'oggetto di visualizzazione nelle dimensioni con cui appare nell'applicazione. Ad esempio, se l'applicazione visualizza la versione bitmap dello sprite ridotta della metà, utilizzate la matrice che riduce della metà. Se l'applicazione visualizza lo sprite più grande rispetto alle sue dimensioni correnti, utilizzate una matrice che ingrandisce di quel fattore.
Per le dimensioni degli oggetti di visualizzazione per i quali la proprietà
cacheAsBitmapMatrix
è impostata esiste un limite pratico di 1020 x 1020 pixel. Per il numero totale di pixel di tutti gli oggetti di visualizzazione per i quali la proprietà
cacheAsBitmapMatrix
è impostata esiste un limite pratico di circa quattro milioni di pixel.
L'utilizzo della proprietà
cacheAsBitmapMatrix
e dell'accelerazione hardware richiede diverse considerazioni. È importante sapere quali oggetti di visualizzazione devono avere la proprietà impostata e quali no. Per informazioni importanti sull'utilizzo di questa proprietà, vedete
Accelerazione hardware
.
Potete utilizzare la funzione di diagnostica del rendering GPU per diagnosticare l'uso della GPU nelle build di debug dell'applicazione. Per ulteriori informazioni, vedete
Debug di un'applicazione iPhone
.
Note sulla connettività di rete
L'uso degli schemi URL seguenti con la funzione
nativigateToURL()
causa l'apertura di un documento in un'applicazione esterna:
Schema URL
|
Risultato delle chiamata a nativeToURL()
|
Esempio
|
mailto:
|
Apre un nuovo messaggio nell'applicazione di posta elettronica.
|
str = "mailto:test@example.com";
var urlReq:URLReq = new URLRequest(str);
navigateToURL(urlReq);
|
sms:
|
Apre un messaggio nell'applicazione dei messaggi di testo.
|
str = "sms:1-415-555-1212";
var urlReq:URLReq = new URLRequest(str);
navigateToURL(urlReq);
|
tel:
|
Compone un numero di telefono (con approvazione utente).
|
str = "tel:1-415-555-1212";
var urlReq:URLReq = new URLRequest(str);
navigateToURL(urlReq);
|
Un'applicazione iPhone potrebbe basarsi su certificati principali autofirmati per l'autenticazione server durante una transazione protetta, ad esempio una richiesta https. Un server deve inviare non solo il certificato foglia ma anche tutti i certificati intermedi che si concatenano al certificato principale.