モバイル AIR アプリケーション固有の ActionScript API

以下に示す API は、モバイルデバイス上の AIR アプリケーションでのみ利用できます。現時点では、これらの API は Flash Player またはデスクトップバージョンの AIR では機能しません。

Screen orientation(画面の向き)API

Screen orientation(画面の向き)API を使用すると、ステージおよび iPhone の向きに対応することができます。

  • Stage.autoOrients — デバイスが回転したときに、ステージの向きが自動的に変更されるようにアプリケーションが設定されているかどうかを示します。Flash Professional CS5 の iPhone 設定ダイアログボックスで「自動回転を有効にする」オプションが選択されている場合、このプロパティには true が設定されます(アプリケーション記述ファイル内で、autoOrients エレメントに true を設定することもできます)。iPhone アプリケーション設定を参照してください。向きの自動回転を解除するには、Stage オブジェクトの orientationChanging イベントリスナーを追加します。このイベントオブジェクトの preventDefault() メソッドを呼び出すと、自動回転が解除されます。

    自動回転の使用時に最適な結果を得るために、Stage の align プロパティを次のように設定します。

    stage.align = StageAlign.TOP_LEFT; 
    stage.scaleMode = StageScaleMode.NO_SCALE;
  • Stage.deviceOrientation — デバイスの物理的な向きです。StageOrientation クラスは、このプロパティの値を定義します。

  • Stage.orientation — ステージの現在の向きです。StageOrientation クラスは、このプロパティの値を定義します。

  • Stage.supportsOrientationChange— iPhone では true、AIR アプリケーションでは false に設定されます。

  • Stage.setOrientation() — ステージの向きを設定します。このメソッドには 1 つのパラメーター(変更後のステージの向きを定義する文字列)が用意されています。StageOrientation クラスの定数によって、パラメーターに設定可能な値を定義します。

  • StageOrientation — ステージの向きを示す値を定義します。例えば、StageOrientation.ROTATED_RIGHT はデバイスのデフォルトの向きに対して右方向に回転したステージを表します。

  • StageOrientationEvent — 画面の向きが変化した際に Stage オブジェクトが送信するイベントを定義します。このイベントは、ユーザーが iPhone を回転させたときに発生します。イベントには、2 種類あります。デバイスが回転されると、Stage オブジェクトはorientationChanging イベントを送信します。ステージの向きが変更されないようにするには、orientationChanging イベントオブジェクトの preventDefault() メソッドを呼び出します。ステージの向きの変更が完了すると、Stage オブジェクトは orientationChange イベントを送信します。

現時点で Screen orientation(画面の向き)API が有効なのは、モバイルデバイス上の AIR アプリケーションのみです。モバイル AIR アプリケーションとデスクトップ AIR アプリケーションでソースコードを共有する場合は、Stage.supportsOrientationChange プロパティを使用して、API がサポートされているかどうかを確認してください。

次の例では、ユーザーがデバイスを回転したときの対応方法を示します。

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; 
}

この例では、個々のステージの向きに対して、機能するコードの代わりにコメントが記述されています。

Stage オブジェクトの setOrientation() メソッドを呼び出すことで、ステージの向きを変更できます。向きの設定の非同期操作です。向きの変更がいつ完了するかを確認するには、orientationChange イベントを監視します。次のコードでは、ステージを右方向に設定する方法を示します。

stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE, 
            onOrientationChange); 
stage.setOrientation(StageOrientation.ROTATED_RIGHT); 
 
function onOrientationChange(event:StageOrientationEvent):void 
{ 
    // Code to handle the new Stage orientation 
}

ステージが回転すると、ステージのサイズが変更され、Stage オブジェクトは resize イベントを送出します。resize イベントに応じてステージ上の表示オブジェクトのサイズと位置を変更できます。

NativeApplication.systemIdleMode および SystemIdleMode

NativeApplication.systemIdleMode プロパティを使用すると、iPhone がアイドルモードに移行するのを防ぐことができます。デフォルトでは、タッチスクリーンに一定期間接触しないと、iPhone はアイドルモードに移行します。アイドルモードでは画面が暗くなります。また、iPhone はロックモードに移行します。このプロパティは、以下に示す 2 つの値のいずれかに設定できます。

  • SystemIdleMode.NORMAL - iPhone は通常の動作に従ってアイドルモードに移行します。

  • SystemIdleMode.KEEP_AWAKE - アプリケーションでは iPhone がアイドルモードに移行しないように試みます。

この機能はモバイルデバイスでのみサポートされています。デスクトップオペレーティングシステムで実行する AIR アプリケーションではサポートされていません。デスクトップ上で動作するアプリケーションでは、NativeApplication.systemIdleMode プロパティを設定しても効果はありません。

以下のコードは、iPhone のアイドルモードを無効化する方法を示しています。

NativeApplication.nativeApplication.systemIdleMode = SystemIdleMode.KEEP_AWAKE;

CameraRoll

CameraRoll クラスを使用すると、イメージを iPhone カメラロールに追加できます。addBitmapData() メソッドは、イメージを iPhone カメラロールに追加します。このメソッドには bitmapData というパラメーターが用意されています。このパラメーターは BitmapData オブジェクトで、カメラロールに追加するイメージが含まれています。

CameraRoll 機能はモバイルデバイスでのみサポートされています。デスクトップオペレーティングシステムで実行する AIR アプリケーションではサポートされていません。アプリケーションで CamerRoll 機能がサポートされているかどうかを実行時にチェックするには、CameraRoll.supportsAddBitmapData 静的プロパティを確認します。

addBitmapData() メソッドが呼び出されると、CameraRoll オブジェクトは以下に示す 2 つのイベントのいずれかを送出します。

  • complete - 操作は正常に完了しました。

  • error - エラーが発生しました。例えば、iPhone にイメージを格納するための十分な空き領域がない場合などです。

以下のコードは、ステージのイメージ(スクリーンキャプチャ)をカメラロールに追加します。

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

cacheAsBitmapMatrix プロパティは、cacheAsBitmaptrue に設定されている場合の表示オブジェクトのレンダリング方法を定義する Matrix オブジェクトです。アプリケーションでは、表示オブジェクトのビットマップバージョンをレンダリングする際に、このマトリックスを変換マトリックスとして使用します。

cacheAsBitmapMatrix が設定されていると、アプリケーションでは、表示マトリックスではなくこのマトリックスを使用してレンダリングされたビットマップイメージのキャッシュを保持します(表示マトリックスとは、表示オブジェクトの transform.concatenatedMatrix の値のことです)。このマトリックスが表示マトリックスと一致しない場合は、必要に応じてビットマップを拡大 / 縮小および回転します。

cacheAsBitmapMatrix が設定されている表示オブジェクトは、cacheAsBitmapMatrix の値が変更された場合にのみレンダリングされます。ビットマップは表示マトリックスに応じて拡大 / 縮小または回転されます。

CPU ベースと GPU ベースのレンダリングはいずれも cacheAsBitmapMatrix プロパティを使用することによる効果を得られます。ただし、通常は GPU レンダリングの方が高い効果を得られます。

注意: ハードウェアアクセラレーションを使用するには、Flash Professional CS5 の iPhone 設定ダイアログボックスにある「一般」タブで、「レンダリング」を「GPU」に設定します。または、アプリケーション記述ファイル内で、renderMode プロパティを gpu に設定します。

例えば、以下のコードでは、表示オブジェクトの未変換のビットマップ表現を使用します。

matrix:Matrix = new Matrix(); // creates an identity matrix 
mySprite.cacheAsBitmapMatrix = matrix; 
mySprite.cacheAsBitmap = true;

以下のコードでは、現在のレンダリングと一致するビットマップ表現を使用します。

mySprite.cacheAsBitmapMatrix = mySprite.transform.concatenatedMatrix; 
mySprite.cacheAsBitmap = true;

通常は、単位マトリックス(new Matrix())または transform.concatenatedMatrix で十分ですが、別のマトリックス(縮小マトリックスなど)を使用すれば、異なるビットマップを GPU にアップロードできます。例えば、以下の例では cacheAsBitmapMatrix マトリックスを適用して、x 軸および y 軸方向に 0.5 倍に縮小します。GPU が使用するビットマップは小さくなりますが、GPU ではビットマップのサイズを表示オブジェクトの transform.matrix プロパティに合わせて調整します。

matrix:Matrix = new Matrix(); // creates an identity matrix 
matrix.scale(0.5, 0.5); // scales the matrix 
mySprite.cacheAsBitmapMatrix = matrix; 
mySprite.cacheAsBitmap = true;

通常は、アプリケーションで表示されるサイズに合わせて表示オブジェクトを変換するマトリックスを選択します。例えば、スプライトについて、サイズを半分に縮小したビットマップバージョンをアプリケーションで表示する場合は、半分の縮小率のマトリックスを使用します。スプライトを現在のサイズよりも拡大してアプリケーションに表示する場合は、該当する拡大率のマトリックスを使用します。

cacheAsBitmapMatrix プロパティを設定する場合、表示オブジェクトのサイズには、実質的な制限があります。その制限は 1,020 x 1,020 ピクセルです。cacheAsBitmapMatrix プロパティを設定する場合、すべての表示オブジェクトの総ピクセル数には、実質的な制限があります。その制限は約 400 万ピクセルです。

cacheAsBitmapMatrix およびハードウェアアクセラレーションの使用に際しては、様々な考慮事項があります。このプロパティを設定する必要があるかどうか、表示オブジェクトごとに把握しておくことが重要です。このプロパティを使用する上での重要な情報については、ハードウェアアクセラレーションを参照してください。

GPU レンダリング診断機能を使用して、アプリケーションのデバッグビルドで GPU 使用状況を診断できます。詳しくは、iPhone アプリケーションのデバッグを参照してください。

ネットワークに関する注意事項

nativigateToURL() 関数で次の URL スキームを使用すると、ドキュメントが外部のアプリケーションで開きます。

URL スキーム

nativeToURL() 呼び出しの結果

mailto:

メールアプリケーションで新規のメッセージを開きます。

str = "mailto:test@example.com"; 
var urlReq:URLReq = new URLRequest(str); 
navigateToURL(urlReq);

sms:

テキストメッセージアプリケーションでメッセージを開きます。

str = "sms:1-415-555-1212"; 
var urlReq:URLReq = new URLRequest(str); 
navigateToURL(urlReq);

tel:

ユーザーの承認後に電話で電話番号をダイヤルします。

str = "tel:1-415-555-1212"; 
var urlReq:URLReq = new URLRequest(str); 
navigateToURL(urlReq);

https リクエストなどの保護されたトランザクションを実行中に、iPhone アプリケーションが、インストールされた自己署名ルート証明書を基にサーバー認証を行う場合があります。サーバーはリーフ証明書だけではなく、ルート証明書に関連付けられたすべての中間証明書を送信する必要があります。