先日公開された Flash Player アップデート 3 にはハードウェア機能を利用したフルスクリーンモードが追加されています。OS の機能を利用した描画は Flash Player としては初ですのでいろいろな環境で試してみてください。従来のフルスクリーンモードも引き続き使用できます。
ハードウェアスケーリングの使い方
Flash Player 9 アップデート 3 の Stage オブジェクトには fullScreenSourceRect という属性が追加されています。この属性は AS2 と AS3 どちらからでも利用可能です。fullScreenSourceRect により指定された領域はハードウェアのスケーリング機能により描画されるため従来のフルスクリーンモードよりパフォーマンスも画質も格段に改善されます。
ここで簡単なサンプルを見てみましょう。下は、Stage を画面全体に広げるサンプルです。
import flash.geom.*; function goFullScreen() { Stage["fullScreenSourceRect"] = new Rectangle(0, 0, Stage.width, Stage.height); Stage["displayState"] = "fullScreen"; }
Flash CS3 側のクラス定義が更新されるまで Stage.fullScreenSourceRect という記述はできませんのでご注意ください。なお fullScreenSourceRect に指定する領域は Stage の外でも構わないようです。
ビデオをフルスクリーンで表示する場合は、Flash 上でのビデオの大きさをオリジナルの大きさにした状態で行うようにします。Stage 上でもビデオのスケールが変更されているとパフォーマンスに大きな影響があります。
下のサンプルは、video オブジェクトを、明示的に表示する映像の大きさに変更してからフルスクリーンにしています。
import flash.geom.*; function goFullScreen() { // 現在表示されている状態を保存しておく myVideo.savedWidth = myVideo.width; myVideo.savedHeight = myVideo.height; myVideo.savedSmoothing = myVideo.smoothing; myVideo.savedDeblocking = myVideo.deblocking; // 表示する映像のサイズを video オブジェクトに設定 myVideo.width = myVideo.videoWidth; myVideo.height = myVideo.videoHeight; myVideo.smoothing = false; myVideo.deblocking = 0; // 映像の領域をフルサイズに Stage["fullScreenSourceRect"] = new Rectangle(myVideo.x, myVideo.y, myVideo.width, myVideo.height); Stage["displayState"] = "fullScreen"; }
ビデオをフルスクリーン表示する場合は、上のようにビデオ以外が表示されないように領域を設定します。また、smoothing を false にして deblocking をオートにするのもパフォーマンス上大事な点になります。
AS3 での注意点
新しいフルスクリーンモードを AS3 で使うには playerglobal.swc を置き換える必要があります。 新しい playerglobal.swc は下のファイルに含まれています。
full_screen_demo.zip (zip, 49.2 MB)
playerglobal.swc を取り出したら以下の場所にコピーしてください。
Flash CS3: Adobe Flash CS3\en\Configuration\ActionScript 3.0\Classes\
Flex Builder: Flex Builder 2\Flex SDK 2\frameworks\libs
full_screen_demo.zip ファイルを解凍し、fullScreenSourceRectDemo.fla ファイルを開こうとしたのですが、「予期しないファイル形式です。」と言われて開けません。
Flash 8 で開いているのですが CS3 からでないとダメでしょうか?
aktaka さん、こんにちは。
申し訳ありませんが CS3 でないと開けないようです。
サンプルをポスとしたスタッフに Flash 8 フォーマットにできるか聞いていますが、とりあえずは CS3 のトライアルをダウンロードするか、CS3 をお持ちの知り合いの方に Flash 8 形式に変換してもらうかを検討していただけますか?
お手数をおかけしてすみません。
お返事ありがとうございます。
やはりCS3じゃないと開けないのですね。
なんとかやってみたいと思います。
ありがとうございました。
はじめまして、sabonと言います。
フルスクリーンモードでFlexコンポーネントのTextInputを作成して入力しようとするとフォーカス自体は入りますが、文字の入力自体ができないのですがこの現象はどのようにしたら解決しますでしょうか?
sabon さん、こんにちは。
セキュリティの観点からフルスクリーンモードではキーによる入力を制限しているそうです。見た目はフルスクリーンでも実際はブラウザ上で実行されているプログラムなので、フィッシングなどの恐れがあるということだと思います。
早速のお返事ありがとうございます。
なるほど、あえて制御しているのですね。
すっきりしました、ありがとうございます。