ActionScript APIs específica para aplicativos AIR móveis

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:

  • SystemIdleMode.NORMAL —O iPhone segue o comportamento de modo ocioso normal.

  • SystemIdleMode.KEEP_AWAKE —O aplicativo tenta impedir que o iPhone entre em modo ocioso.

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.