Stage プロパティの設定Flash Player 9 以降、Adobe AIR 1.0 以降 Stage クラスは、DisplayObject クラスのほとんどのプロパティとメソッドをオーバーライドします。 オーバーライドされたプロパティまたはメソッドのいずれかを呼び出した場合、Flash Player および AIR は例外をスローします。例えば、Stage オブジェクトは、アプリケーションのメインコンテナとして位置が固定されているため、x プロパティや y プロパティを持ちません。x プロパティと y プロパティは、コンテナを基準として表示オブジェクトの位置を参照します。Stage オブジェクトは別の表示オジェクトコンテナに含まれていないので、この 2 つのプロパティは適用されません。 注意: Stage クラスの一部のプロパティおよびメソッドは、最初にロードされた SWF ファイルと同じセキュリティサンドボックス内にあるオブジェクトを表示するためにのみ使用できます。詳しくは、ステージのセキュリティを参照してください。
再生フレームレートの制御Stage クラスの frameRate プロパティは、アプリケーションにロードされたすべての SWF ファイルのフレームレートを設定するために使用します。詳しくは、『Adobe Flash Platform 用 ActionScript 3.0 リファレンスガイド』を参照してください。 ステージの拡大 / 縮小の制御Flash Player または AIR を表す画面の部分のサイズが変更されると、ランタイムは自動的にステージのコンテンツを調整して補正します。ステージのコンテンツを調整する方法は、Stage クラスの scaleMode プロパティで指定します。このプロパティには、flash.display.StageScaleMode クラスの定数として定義されている次の 4 つの異なる値を設定できます。
AIR ウィンドウに対するステージの拡大 / 縮小モードの設定ステージの scaleMode プロパティは、ウィンドウのサイズを変更した場合に、ステージで子表示オブジェクトを拡大 / 縮小したり切り取ったりする方法を決定します。AIR では、noScale モードしか使用できません。このモードでは、ステージは拡大 / 縮小されません。その代わり、ステージのサイズは、ウィンドウの境界を使用して直接変更します。ウィンドウのサイズを小さくした場合は、ウィンドウが切り取られることがあります。 ステージの拡大 / 縮小モードは、ステージのサイズや縦横比を常に制御できるとは限らない Web ブラウザーなどの環境用に設計されています。モードにより、ステージがアプリケーションの理想的なサイズまたは縦横比に一致しない場合の最良の妥協策を選択できます。AIR ではステージを常に制御できるので、コンテンツの再レイアウトやウィンドウサイズの調整を行うことにより、ほとんどの場合、ステージの拡大 / 縮小を有効にするよりも適切な結果が得られます。 ブラウザーと AIR の初期ウィンドウでは、ウィンドウサイズと最初の縮尺率の関係は、読み込んだ SWF ファイルから読み取られます。ただし、NativeWindow オブジェクトを作成する場合は、AIR によってウィンドウサイズと縮尺率(72:1)の任意の関係が選択されます。したがって、ウィンドウが 72 x 72 ピクセルの場合、ウィンドウに追加された 10 x 10 の矩形は正しいサイズ(10 x 10 ピクセル)で描画されます。ただし、ウィンドウが 144 x 144 ピクセルの場合は、10 x 10 ピクセルの矩形は 20 x 20 ピクセルに拡大されます。ウィンドウのステージに noScale 以外の scaleMode プロパティをどうしても使用する場合は、ウィンドウの表示オブジェクトの縮尺率を「72 ピクセル対ステージの現在の幅と高さ」に設定することによって補正できます。例えば、次のコードでは、client という名前の表示オブジェクトに必要な縮尺率を計算します。 if(newWindow.stage.scaleMode != StageScaleMode.NO_SCALE){ client.scaleX = 72/newWindow.stage.stageWidth; client.scaleY = 72/newWindow.stage.stageHeight; } 注意: Flex ウィンドウと HTML ウィンドウでは、ステージの scaleMode プロパティは自動的に noScale に設定されます。scaleMode を変更すると、これらのタイプのウィンドウで使用されている自動レイアウト機能の動作が妨げられます。
フルスクリーンモードの操作フルスクリーンモードを使用すると、ムービーのステージをビューアのモニター全体に設定できます。境界線やメニューなどは表示されません。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 キー(Mac OS)、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() 関数(Flash Professional および Flash Builder で生成された HTML ページで使用される)を使用する場合、allowFullScreen パラメーターを該当の関数呼び出しに対して次のように追加する必要があります。 AC_FL_RunContent( ... 'allowFullScreen','true', ... ); //end AC code これは、スタンドアローンの Flash Player で実行される SWF ファイルには適用されません。 注意: ウィンドウモード(HTML の wmode)を「不透明表示」(不透明)または「透明表示」(透明)に設定した場合、フルスクリーンウィンドウは常に不透明になります。
また、ブラウザー上の Flash Player におけるフルスクリーンモードの使用については、セキュリティに関連する制限があります。それらの制限についての説明は、セキュリティを参照してください。 フルスクリーンのステージサイズと拡大 / 縮小Stage.fullScreenHeight プロパティと Stage.fullScreenWidth プロパティは、フルスクリーンの状態にすぐ移行する場合、フルスクリーンサイズで使用されるモニターの高さと幅を返します。これらの値を取得した後、フルスクリーンモードに移行する前にユーザーがブラウザーを別のモニター上に移動する機会があると、値が無効になる可能性があります。これらの値の取得処理と Stage.displayState プロパティを StageDisplayState.FULL_SCREEN に設定する処理を同じイベントハンドラー内で実行すれば、値は正しいものとなります。複数のモニターがあるユーザー環境では、SWF コンテンツは 1 台のモニターのみを使用してフルスクリーン表示されます。Flash Player および AIR では、SWF コンテンツのもっとも多くの部分が配置されているモニターを一定の基準によって判別し、そのモニターをフルスクリーンモードで使用します。fullScreenHeight および fullScreenWidth プロパティは、フルスクリーンモードで使用されるモニターのサイズのみを反映します。詳しくは、『Adobe Flash Platform 用 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 が無効になります。ただし、例外として次のキーは有効です。
これらの制約は、スタンドアローンの 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 キーを押しながらクリック(Mac OS)します。最初のタブである「表示」タブを選択し、「ハードウェアアクセラレーション」チェックボックスをクリックします。 直接ウィンドウモードおよび 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 以上(Mac OS)が必要です。Windows で GPU 合成を使用するには、Microsoft DirectX 9 および Pixel Shader 2.0 対応で 128 MB の VRAM を搭載したハードウェアが必要です。Mac OS および Linux で GPU 合成を使用するには、OpenGL 1.5 およびいくつかの OpenGL 拡張(フレームバッファーオブジェクト、マルチテクスチャ、シェーダーオブジェクト、シェーディング言語、フラグメントシェーダー)が必要です。 direct および gpu アクセラレーションモードは、Flash のパブリッシュ設定ダイアログボックスで、「Flash」タブのハードウェアアクセラレーションメニューを使用して SWF ごとにアクティブにすることができます。「なし」を選択した場合、ウィンドウモードは、「HTML」タブの「ウィンドウモード」設定での指定に応じて default、transparent または opaque に戻ります。 |
|