フルスクリーンモードの操作

フルスクリーンモードを使用すると、ムービーのステージをビューアのモニタ全体に設定できます。境界線やメニューなどは表示されません。Stage クラスの displayState プロパティは、SWF のフルスクリーンモードのオンとオフを切り替えるために使用されます。displayState プロパティは、flash.display.StageDisplayState クラスの定数で定義されるいずれかの値に設定できます。フルスクリーンモードをオンにするには、displayState プロパティを StageDisplayState.FULL_SCREEN に設定します。

stage.displayState = StageDisplayState.FULL_SCREEN; 

フルスクリーンモードは、マウスがクリックされた場合(右クリックを含む)またはキーが押された場合の応答として、ActionScript によってのみ初期化することができます。アプリケーションのセキュリティサンドボックスで実行される AIR コンテンツでは、ユーザーの操作に応答してフルスクリーンモードに入る必要はありません。

フルスクリーンモードを終了するには、displayState プロパティを StageDisplayState.NORMAL に設定します。

stage.displayState = StageDisplayState.NORMAL; 

また、別のウィンドウにフォーカスを切り替えるか、Esc キー(すべてのプラットフォーム共通)、Ctrl+W キー(Windows)、Command+W キー(Macintosh)、Alt+F4 キー(Windows)のいずれかを使用してフルスクリーンモードを終了することもできます。

Flash Player のフルスクリーンモードの有効化

HTML ページに埋め込まれた SWF ファイルでフルスクリーンモードを有効にするには、Flash Player を埋め込む HTML コードに param タグを含め、次のように embed 属性で名前 allowFullScreen と値 true を指定する必要があります。

<object> 
    ... 
    <param name="allowFullScreen" value="true" /> 
    <embed ... allowfullscreen="true" /> 
</object>

Flash オーサリングツールで、ファイル/パブリッシュ設定を選択し、パブリッシュ設定ダイアログの「HTML」タブで、「Flash のみ - フルスクリーンサポート」テンプレートを選択します。

Flex で、HTML テンプレートにフルスクリーンをサポートする <object> タグおよび <embed> タグが含まれていることを確認します。

Web ページ内の JavaScript を使用して SWF 埋め込みタグを生成する場合、JavaScript を変更して、allowFullScreen param タグや属性を追加する必要があります。例えば、HTML ページで AC_FL_RunContent() 関数(Flex Builder および Flash の両方で生成された HTML ページで使用される)を使用する場合、allowFullScreen パラメータを該当の関数呼び出しに対して次のように追加する必要があります。

AC_FL_RunContent( 
    ... 
    'allowFullScreen','true', 
    ... 
    ); //end AC code

これは、スタンドアローンの Flash Player で実行される SWF ファイルには適用されません。

注意: ウィンドウモード(HTML の wmode)を「不透明表示」(不透明)または「透明表示」(透明)に設定した場合、フルスクリーンウィンドウは常に不透明になります。

また、ブラウザ上の Flash Player におけるフルスクリーンモードの使用については、セキュリティに関連する制限があります。それらの制限についての説明は、Flash Player セキュリティを参照してください。

フルスクリーンのステージサイズと拡大 / 縮小

Stage.fullScreenHeight プロパティと Stage.fullScreenWidth プロパティは、フルスクリーンの状態にすぐ移行する場合、フルスクリーンサイズで使用されるモニタの高さと幅を返します。これらの値を取得した後、フルスクリーンモードに移行する前にユーザがブラウザを別のモニタ上に移動する機会があると、値が無効になる可能性があります。これらの値の取得処理と Stage.displayState プロパティを StageDisplayState.FULL_SCREEN に設定する処理を同じイベントハンドラ内で実行すれば、値は正しいものとなります。複数のモニタがあるユーザ環境では、SWF コンテンツは 1 台のモニタのみを使用してフルスクリーン表示されます。Flash Player および AIR では、SWF コンテンツのもっとも多くの部分が配置されているモニタを一定の基準によって判別し、そのモニタをフルスクリーンモードで使用します。fullScreenHeight および fullScreenWidth プロパティは、フルスクリーンモードで使用されるモニタのサイズのみを表します。詳しくは、『ActionScript 3.0 言語およびコンポーネントリファレンス』で Stage.fullScreenHeight および Stage.fullScreenWidth の項目を参照してください。

フルスクリーンモードでのステージの拡大 / 縮小操作は、通常モードの場合と同様です。拡大 / 縮小は、Stage クラスの scaleMode プロパティで制御します。scaleMode プロパティを StageScaleMode.NO_SCALE に設定した場合、Stage の stageWidth プロパティと stageHeight プロパティは、SWF が占める画面領域のサイズ(この場合は画面全体)に応じて変わります。ブラウザで表示する場合は、これに対応する HTML パラメータによって設定が制御されます。

Stage クラスの fullScreen イベントを使用すると、フルスクリーンモードのオンとオフを検出して応答することができます。例えばこの例のように、フルスクリーンモードに移行するとき、またはフルスクリーンモードを終了するときに、画面アイテムの再配置、追加、削除を行うことができます。

import flash.events.FullScreenEvent; 
 
function fullScreenRedraw(event:FullScreenEvent):void 
{ 
    if (event.fullScreen) 
    { 
        // Remove input text fields. 
        // Add a button that closes full-screen mode. 
    } 
    else 
    { 
        // Re-add input text fields. 
        // Remove the button that closes full-screen mode. 
    } 
} 
 
mySprite.stage.addEventListener(FullScreenEvent.FULL_SCREEN, fullScreenRedraw);

このコードが示すように、fullScreen イベントのイベントオブジェクトは、flash.events.FullScreenEvent クラスのインスタンスです。このクラスには、フルスクリーンモードが有効(true)であるか無効(false)であるかを示す fullScreen プロパティがあります。

フルスクリーンモードでのキーボードサポート

Flash Player をブラウザ上で実行しているとき、フルスクリーンモードでは、キーボードイベントやテキスト入力などすべてのキーボード関連 ActionScript が無効になります。ただし、例外として次のキーは有効です。

  • 非表示文字を表す一部のキー:矢印キー、スペースバー、Tab キー

  • フルスクリーンモードを終了するキーボードショートカット:Esc キー(Windows と Macintosh)、Ctrl+W キー(Windows)、Command+W キー(Macintosh)、Alt+F4 キー

これらの制約は、スタンドアローンの Flash Player または AIR ランタイムで実行されている SWF コンテンツには適用されません。 AIR では、キーボード入力を許可するインタラクティブフルスクリーンモードがサポートされています。

フルスクリーンモードでのハードウェア拡大 / 縮小機能

Stage クラスの fullScreenSourceRect プロパティを使用すると、ステージの特定の領域をフルスクリーンモードに拡大するように Flash Player または AIR を設定できます。 Flash Player と AIR では、ユーザのコンピュータに搭載されたグラフィックカードやビデオカードにハードウェアの拡大 / 縮小機能があれば、これを利用します。通常、表示の拡大 / 縮小はソフトウェアよりもハードウェアで実行する方が高速に処理できます。

ハードウェアの拡大 / 縮小機能を活用するには、ステージ全体またはステージの一部をフルスクリーンモードに設定します。 次の ActionScript 3.0 コードでは、ステージ全体をフルスクリーンモードに設定します。

import flash.geom.*;  
{ 
    stage.fullScreenSourceRect = new Rectangle(0,0,320,240); 
    stage.displayState = StageDisplayState.FULL_SCREEN; 
}

このプロパティを有効な矩形に設定し、displayState プロパティをフルスクリーンモードに設定すると、指定された領域が Flash Player および AIR により拡大 / 縮小されます。ActionScript 内の実際のステージサイズ (ピクセル単位) は変更されません。 標準の「フルスクリーンモードを終了するには、Esc キーを押します」というメッセージに対応するため、矩形のサイズに最小限度が適用されます。通常、この限度は約 260 × 30 ピクセルですが、プラットフォームおよび Flash Player のバージョンによって異なる場合があります。

fullScreenSourceRect プロパティを設定できるのは、Flash Player がフルスクリーンモードでない場合のみです。このプロパティを正しく使用するには、先にこのプロパティを設定し、次に displayStateプロパティをフルスクリーンモードに設定します。

拡大 / 縮小を有効にするには、次のように fullScreenSourceRect プロパティを矩形オブジェクトに設定します。

stage.fullScreenSourceRect = new Rectangle(0,0,320,240);

拡大 / 縮小を無効にするには、fullScreenSourceRect プロパティを null に設定します。

stage.fullScreenSourceRect = null;

Flash Player でハードウェアの拡大 / 縮小機能をすべて利用するには、Flash Player の設定ダイアログボックスで機能を有効にします。このダイアログボックスをロードするには、ブラウザ上の Flash Player コンテンツ内を右クリック(Windows)または Control キーを押しながらクリック(Macintosh)します。最初のタブである「表示」タブを選択し、「ハードウェアアクセラレーション」チェックボックスをクリックします。

直接ウィンドウモードおよび GPU 合成ウィンドウモード

Flash Player 10 では、直接および GPU 合成という 2 つのウィンドウモードが導入されました。これらのウィンドウモードは、Flash オーサリングツールのパブリッシュ設定で有効にすることができます。これらのモードは、AIR ではサポートされていません。これらのモードを利用するには、Flash Player に対してハードウェアアクセラレーションを有効にする必要があります。

直接モードでは、最も速く最も直接的なパスを使用して画面にグラフィックスを挿入します。この方法はビデオの再生に有利です。

GPU 合成では、ビデオカード上のグラフィックスプロセッシングユニットを使用して合成を加速します。ビデオ合成は、複数のイメージを階層化して単一のビデオイメージを作成するプロセスです。合成が GPU によって加速される場合、YUV 変換、カラー補正、回転または拡大 / 縮小、ブレンドのパフォーマンスが向上します。YUV 変換は、送信に使用されるコンポジットアナログシグナルから、ビデオカメラと画面で使用される RGB(赤、緑、青)カラーモデルへの色変換を表します。GPU を使用して合成を加速すると、CPU に対するメモリと計算の要求が低減します。標準定義ビデオの再生も円滑になります。

これらのウィンドウモードを実装する際には注意が必要です。GPU 合成を使用すると、メモリおよび CPU リソースのコストが高くなる場合があります。ブレンドモード、フィルタ処理、クリッピング、マスキングなどの一部の操作を GPU で実行できない場合は、ソフトウェアで行われます。これらのモードを使用し、バナーに対してこれらのモードを有効にしない場合は、HTML ページあたり 1 つの SWF ファイルに制限することをお勧めします。Flash Test Movie 機能では、ハードウェアアクセラレーションは使用されませんが、「パブリッシュプレビュー」オプションから使用することができます。

最大の画面更新レートである 60 を超えるフレームレートを SWF ファイルで設定することは無意味です。50 ~ 55 のフレームレートを設定すると、ドロップされたフレームが考慮されます。フレームのドロップは、様々な理由で時々発生することがあります。

直接モードを使用するには、Microsoft DirectX 9 対応で 128 MB の VRAM を搭載したハードウェア(Windows)か、OpenGL for Macintosh または Mac OS X v10.2 以上(Macintosh)が必要です。Windows で GPU 合成を使用するには、Microsoft DirectX 9 および Pixel Shader 2.0 対応で 128 MB の VRAM を搭載したハードウェアが必要です。Macintosh および Linux で GPU 合成を使用するには、OpenGL 1.5 およびいくつかの OpenGL 拡張(フレームバッファオブジェクト、マルチテクスチャ、シェーダオブジェクト、シェーディング言語、フラグメントシェーダ)が必要です。

direct および gpu アクセラレーションモードは、Flash のパブリッシュ設定ダイアログボックスで、「Flash」タブのハードウェアアクセラレーションメニューを使用して SWF ごとにアクティブにすることができます。「なし」を選択した場合、ウィンドウモードは、「HTML」タブの「ウィンドウモード」設定での指定に応じて defaulttransparent または opaque に戻ります。