As APIs a seguir somente estão disponíveis nos aplicativos AIR de dispositivos móveis. Elas não são funcionais na versão de estação de trabalho do Flash Player ou AIR.
API da orientação da tela
O arquivo API da orientação da tela permite que você trabalhe com a orientação do palco e do iPhone:
-
Stage.autoOrients
: o aplicativo é definido para reorientar automaticamente o palco quando o dispositivo é girado. Essa propriedade é definida em
true
quando a opção Orientação automática é selecionada na caixa de diálogo Configurações do iPhone do Flash Professional CS5. (Também é possível definir o elemento
autoOrients
em
true
no arquivo do descritor do aplicativo). Consulte
Configurações de aplicativos para iPhone
. É possível cancelar a reorientação automática adicionando um ouvinte de evento
orientationChanging
ao objeto Palco. Chamar o método
preventDefault()
desse objeto de evento cancela a reorientação automática.
Ao utilizar orientação automática, para obter melhores resultados, defina a propriedade
align
de palco para a seguinte:
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
-
Stage.deviceOrientation
: Orientação física do dispositivo. A classe StageOrientation define valores para essa propriedade.
-
Stage.orientation
: Orientação atual do palco. A classe StageOrientation define valores para essa propriedade.
-
Stage.supportsOrientationChange
: Definida em
true
no iPhone e
false
no aplicativo AIR.
-
Stage.setOrientation()
: Define a orientação do palco. Este método possui um parâmetro, que é uma cadeia de caracteres que define a nova orientação do palco. As constantes na classe StageOrientation definem possíveis valores para o parâmetro.
-
StageOrientation: Define os valores da orientação do palco. Por exemplo,
StageOrientation.ROTATED_RIGHT
indica o palco que é girado à direita em relação à orientação padrão do dispositivo.
-
StageOrientationEvent: Define os eventos que o palco despacha quando a orientação da tela altera. Esse evento ocorre quando o usuário gira o iPhone. Existem dois tipos de eventos. O palco despacha o evento
orientationChanging
quando o dispositivo é girado. Para evitar que o palco reoriente, chame o método
preventDefault()
do objeto de evento
orientationChanging
. O palco despacha o evento
orientationChange
assim que a reorientação do palco completar.
Atualmente, a API de orientação de tala é útil em aplicativos AIR em dispositivos móveis. Se um aplicativo AIR e um aplicativo AIR de área de trabalho compartilharem o mesmo código-fonte, use a propriedade
Stage.supportsOrientationChange
para verificar se existe suporte à API.
O exemplo a seguir mostra como responder ao usuário girando o dispositivo:
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;
}
Nesse exemplo, no caso de diferentes orientações de palco, há comentários em vez do código funcional.
É possível alterar a orientação do palco chamando o método
setOrientation()
do objeto do palco. A configuração da orientação é uma operação assíncrona. É possível verificar quando a orientação é completa ouvindo o evento
orientationChange
. O código a seguir mostra como definir o palco com orientação à direita:
stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE,
onOrientationChange);
stage.setOrientation(StageOrientation.ROTATED_RIGHT);
function onOrientationChange(event:StageOrientationEvent):void
{
// Code to handle the new Stage orientation
}
Conforme o Palco pode ser girado e redimensionado e o objeto de Palco envia um evento
resize
. Você pode redimensionar e reposicionar objetos de exibição no Palco como resposta a um evento
Redimensionar
.
NativeApplication.systemIdleMode e SystemIdleMode
A propriedade
NativeApplication.systemIdleMode
permite evitar que o iPhone entre em modo ocioso. Por padrão, o iPhone entra em modo ocioso se não existir uma interação de toque de tela em um período específico. O modo ocioso pode fazer com que a tela escureça. Ele também pode fazer com que o iPhone entre em modo bloqueado. Esta propriedade pode ser definida para um dos dois valores a seguir:
Esta funcionalidade é suportada somente em dispositivos portáteis. Ela não é suportada em aplicativos AIR executados em sistemas operacionais de áreas de trabalho. Em um aplicativo executado na área de trabalho, definir a propriedade
NativeApplication.systemIdleMode
não causa efeitos.
O código a seguir mostra como desabilitar o modo ocioso do iPhone:
NativeApplication.nativeApplication.systemIdleMode = SystemIdleMode.KEEP_AWAKE;
CameraRoll
A classe CameraRoll permite adicionar uma imagem ao rolo da câmera do iPhone. O método
addBitmapData
adiciona uma imagem ao rolo de câmera do iPhone. Este método possui um parâmetro,
bitmapData
. Este parâmetro é o BitmapData que contém a imagem a ser adicionada ao rolo da câmera.
A funcionalidade CameraRoll é suportada somente em dispositivos portáteis. Ela não é suportada em aplicativos AIR executados em sistemas operacionais de áreas de trabalho. Para verificar em tempo de execução se o aplicativo suporta a funcionalidade CameraRoll, selecione a propriedade estática
CameraRoll.supportsAddBitmapData
.
Após chamar o método
addBitmapData()
, o objeto CameraRoll envia um de dois eventos:
-
complete
—A operação foi concluía com sucesso.
-
error
—Ocorreu um erro. Por exemplo, talvez não haja espaço livre suficiente no iPhone para armazenar a imagem.
O código a seguir adiciona uma imagem ao palco (uma captura de tela) ao rolo da câmera:
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
A propriedade
cacheAsBitmapMatrix
é um objeto Matriz que define como um objeto de exibição é renderizado quando
cacheAsBitmap
está definido para
true
. O aplicativo utiliza esta matriz como matriz de transformação ao renderizar a versão bitmap do objeto de exibição.
Com
cacheAsBitmapMatrix
definido, o aplicativo retém a imagem bitmap em cache renderizada utilizando a matriz, em vez da matriz de exibição. (A matriz de exibição é o valor de
transform.concatenatedMatrix
do objeto de exibição). Se esta matriz não corresponder à matriz de exibição, o bitmap é dimensionado e girado conforme necessário.
Um objeto de exibição com
cacheAsBitmapMatrix
definido somente é renderizado quando o valor de
cacheAsBitmapMatrix
é alterado. O bitmap é dimensionado ou girado conforme necessário, para corresponder à matriz de exibição.
A renderização por meio de CPU e HOJE se beneficiam da utilização da propriedade
cacheAsBitmapMatrix
, embora a renderização por meio e HOJE geralmente se beneficie mais.
Nota:
Para usar a aceleração por hardware, configure a GPU (Unidade de processamento gráfico) na guia Geral da caixa de diálogo Configurações do iPhone no Flash Professional CS5. (Ou defina a propriedade
renderMode
para
gpu
no arquivo do descritor do aplicativo).
Por exemplo, o código a seguir utiliza uma representação de bitmap não transformada do objeto de exibição:
matrix:Matrix = new Matrix(); // creates an identity matrix
mySprite.cacheAsBitmapMatrix = matrix;
mySprite.cacheAsBitmap = true;
O código a seguir utiliza uma representação de bitmap que corresponde à renderização atual:
mySprite.cacheAsBitmapMatrix = mySprite.transform.concatenatedMatrix;
mySprite.cacheAsBitmap = true;
Geralmente, a matriz de identificação (
new Matrix()
) ou
transform.concatenatedMatrix
é suficiente. No entanto, você pode utilizar outra matriz como, por exemplo, uma matriz reduzida, para fazer o upload de um bitmap diferentes para a UGP. O exemplo a seguir aplica uma matriz
cacheAsBitmapMatrix
dimensionada para 0.5 nos eixos x e y. O objeto de bitmap utilizado pela UGP é menor. No entanto, a UGP ajusta seu tamanho para corresponder à propriedade
transform.matrix
do objeto de exibição:
matrix:Matrix = new Matrix(); // creates an identity matrix
matrix.scale(0.5, 0.5); // scales the matrix
mySprite.cacheAsBitmapMatrix = matrix;
mySprite.cacheAsBitmap = true;
Geralmente, selecione uma matriz que transforma o objeto de exibição para o tamanho que será exibido no aplicativo. Por exemplo, se o aplicativo exibe uma versão de bitmap reduzida pela metade da sprite, utilize uma matriz que reduz pela metade. Se o aplicativo exibir uma sprite maior que as dimensões atuais, utilize uma matrix que dimensiona aumentando por este fator.
Existe um limite prático para o tamanho dos objetos de exibição para os quais a propriedade
cacheAsBitmapMatrix
está definida. O limite é 1020 por 1020 pixels. Existe um limite prático para o número total de pixels para todos os objetos de exibição para os quais a propriedade
cacheAsBitmapMatrix
está definida. Este limite é aproximadamente de quatro milhões de pixels.
Existem diversos pontos a serem observados ao utilizar
cacheAsBitmapMatrix
e aceleração por hardware. É importante saber quais objetos devem possuir ou não a propriedade definida. Para obter informações importante sobre como utilizar esta propriedade, consulte
Aceleração por hardware
.
É possível utilizar o recurso de diagnóstico de renderização por GPU para diagnosticar o uso da GPU em versões de depuração do seu aplicativo. Para obter mais informações, consulte
Depurando um aplicativo para iPhone
.
Observações sobre redes
Utilizando os seguintes esquemas de URL com a função
nativigateToURL()
faz com que o documento abra em uma aplicativo externo:
Esquema de URL
|
Resultado da chamada para nativeToURL()
|
Exemplo
|
mailto:
|
Abre uma nova mensagem no aplicativo do mail.
|
str = "mailto:test@example.com";
var urlReq:URLReq = new URLRequest(str);
navigateToURL(urlReq);
|
sms:
|
Abre uma mensagem no aplicativo de mensagem de texto.
|
str = "sms:1-415-555-1212";
var urlReq:URLReq = new URLRequest(str);
navigateToURL(urlReq);
|
tel.:
|
Disca um número de telefone (com a aprovação do usuário).
|
str = "tel:1-415-555-1212";
var urlReq:URLReq = new URLRequest(str);
navigateToURL(urlReq);
|
Um aplicativo para iPhone pode contar com certificados raiz autoassinados para autenticação de servidor durante uma transação segura, tal como uma solicitação https. Um servidor deveria enviar não apenas a folha do certificado mas também certificados intermediários encadeando para o certificado raiz.