3 December 2007
ページ ツール |
注:Flash CS3 Professionalユーザ向けに、Flash Player 9 Update 3のすべてのデバッグ版とリリース版、および H.264をサポートする新しいビデオ再生コンポーネントを含むアップデートをご用意しています。このアップデートは、Adobe Update Managerを通じて入手するか、Flashサポートセンターから直接入手できます。
ブロードバンドの普及により、Webにおけるビデオの使用は驚異的に伸びました。2007年3月に実施されたcomScore Video Metrixのランキング調査によると、米国のインターネットユーザの7名中5名(71.4%)が、ビデオをオンラインでストリームしたことがあるそうです。また、2007年6月のPew Internet & American Life Projectのレポートによると、米国の成人の47%が自宅に高速接続環境を備えています。
この傾向を推進するFlashビデオは、新しい種類の統合インタラクティブビデオコンテンツとアプリケーションを配信し、Webでビデオの新しいビジネスモデルを実現するために使用されています。Macromedia Studio 8とMacromedia Flash Player 8のリリース以来、Flashビデオは、ティーンエイジャーが忍者の格好でカラオケを歌うホームビデオから、映画の予告編、広告、テレビ番組シリーズに至るまで、インターネットのあらゆる種類のコンテンツに爆発的に使用されるようになりました。
現在のFlash PlayerとFlashビデオでも「没頭できる」ビデオ体験が可能ですが、ビデオを投稿している多くの人々が視聴者に提供したいと願う完全没入型の体験を提供できるまでには至っていません。この没入感をさらに高め、視聴者がブラウザのフレームを超えてコンピュータの全画面にコンテンツを表示できるようにするために、Adobe Flash Player 9のフルスクリーンモードを活用することができます。
フルスクリーンモードはあらゆる種類のFlashアプリケーションで使用することが可能ですが、この初期実装でFlash Playerチームが力を入れた主な用途はFlashビデオアプリケーションでした。したがって、フルスクリーンモードには多くのセキュリティ上の制約(詳細は次のセクションで説明)があり、そのために完全にインタラクティブなFlashアプリケーション、またはゲームの利点が制限されることがあります。これらの制限については、Flash Playerの今後のバージョンでこの機能の開発を続けながら対応していきたいと思います。
フルスクリーンモードは、以前のバージョンのFlashスタンドアローンプレイヤーとプロジェクタですでにサポートされており、その実装は変更されていません。ただし、スタンドアローンプレイヤーとブラウザプレイヤーの両方で動作する新しいActionScriptと、モードを有効にできる新しいHTMLタグパラメータallowFullScreenが追加されました。Flash PlayerのフルスクリーンモードはActionScriptから開始され、ActionScriptやキーボードショートカットを使用するか、またはユーザがフォーカスを別のウィンドウに切り替えることによって終了できます。
Flash Playerの最新バージョンをインストールしている場合は、ステージのどの部分を画面全体に表示するかを指定することもできます。 フルスクリーンモードに移行する前にfullScreenRectに値を割り当てると、ハードウェアスケーリングによってビデオを表示できるようになり、ビデオの再生パフォーマンスをさらに向上することができます。
ただし、ハードウェアスケーリングで表示するには、ユーザのビデオカードの機能を使用する必要があるため、ビデオカードでこの機能がサポートされていない場合は、元のソフトウェア描画によるフルスクリーン表示が使用されます。 また、ユーザの選択により、ハードウェアスケーリングをオフにして、元のソフトウェア描画によるフルスクリーンモードで表示することもできます。
フルスクリーンモードは、wmodeがウィンドウなしの不透明、または透明の場合にはサポートされていませんでしたが、Flash Playerの最新バージョンからはサポートされるようになりました。 ユーザが複数のモニタを持っている場合、Flash Playerはメトリックを使用してFlashムービーの割合が一番大きいモニタを判別し、このメインモニタをフルスクリーンモード用に使用します。
フルスクリーンモードを使用するにはFlash Player 9.0.28.0以上、ハードウェアスケーリングによるフルスクリーンモードを使用するにはFlash Player 9.0.115.0以上をインストールしている必要があります。
注意:フルスクリーンモードを終了するキーボードショートカットは、Escキー(WindowsおよびMac OS)、Ctrl+Wキー(Windows)、Command+Wキー(Mac OS)、Alt+F4キー(Windows)です。
エンドユーザのセキュリティはこの機能を実装する際の重要な考慮事項です。そのため、開発者は次のエンドユーザ、およびセキュリティ関連の制限とデザインコンテンツを理解している必要があります。
<object>および<embed>タグパラメータ、allowFullScreenをHTMLに追加する必要があります。このパラメータのデフォルト値はfalseで、フルスクリーンは使用できません。フルスクリーンを使用するには、開発者は<object>/<embed>タグでallowFullScreenをtrueに設定する必要があります。FullScreenDisable=1という行をmms.cfgファイルに追加して、フルスクリーンモードを無効にします。これらの制限はFlashプラグインとActiveXコントロールに適用されますが、FlashスタンドアローンプレイヤーやFlashプロジェクタには適用されません。
フルスクリーンモードを開始または終了するための新しいActionScriptメソッド、およびフルスクリーンモードが開始または終了したときにムービーを通知する対応イベントが、ActionScript 2.0とActionScript 3.0に追加されました。 前述したとおり、フルスクリーンモードを開始するActionScriptは、マウスクリック、またはキー入力に反応する形でのみ動作します。
Stage.displayState:String property
このプロパティは取得と設定が可能です。 有効な値は次のとおりです。
fullScreennormalこのプロパティは、ムービーの現在の状態をチェックしたり、フルスクリーンモードを開始または終了したりするのに使用されます。
Stageオブジェクトのイベントリスナーは、ムービーがフルスクリーンモードを開始または終了するときに通知を行います。
EventListener.onFullScreen = function( bFull:Boolean ){}
Stage.addListener( EventListener );
このメソッドは、ムービーがフルスクリーンモードを開始または終了するときに呼び出されます。 この関数に対するブール値引数は、ムービーがフルスクリーンモードを開始した(true)か、終了した(false)かを示します。
Stage.fullScreenSourceRect:Rectangle property
このプロパティを使用すると、ステージのどの部分を画面全体に表示するかを指定できます。 このプロパティを指定すると、ハードウェアスケーリングモードも有効になります。 このプロパティは、ステージ内外のどこにでも設定できる矩形です。 フルスクリーンモードに移行する前に指定する必要があります。
フルスクリーンモードへの以降後にfullScreenSourceRectを調整しても、SWFの表示領域は変更されません。 また、指定した矩形の縦横比がユーザのモニターの縦横比と異なっている場合は、必要に応じて両脇に「バー」が追加されます。このバーの色は、そのSWFの背景色、またはHTMLで設定されたSWFの背景色と同じです。
ユーザがFlash Playerの設定でハードウェアスケーリングをオフにしているか、Flash Playerを実行しているマシンにハードウェアスケーリングで表示する機能が備わっていない場合、fullScreenSourceRectは無視され、通常のソフトウェア描画によるフルスクリーンモードが使用されます。
flash.display.Stage.displayState:String property
このプロパティは取得と設定が可能です。 有効な値はStageDisplayStateクラスから取得されます。
StageDisplayState.FULL_SCREENStage.DisplayState.NORMALこのプロパティは、ムービーの現在の状態をチェックしたり、フルスクリーンモードを開始または終了したりするのに使用されます。
Stageオブジェクトのイベントリスナーは、ムービーがフルスクリーンモードを開始または終了するときに通知を行います。
fullScreenHandler = function( event:FullScreenEvent ) {};
stage.addEventListener( FullScreenEvent.FULL_SCREEN, fullScreenHandler );
受け取るAS3イベントはFullScreenEventで、これはActivityEventを拡張します。 FullScreenEventにはブール値のfullScreenプロパティがあります。このプロパティは、ムービーがフルスクリーンモードを開始した(true)か、終了した(false)かを示します。
ActionScript 3.0では、上記のセキュリティ上の制約の1つによって表示が禁止されているときに表示状態をStageDisplayState.FULL_SCREENに設定すると、プラグインまたはActiveXコントロールでセキュリティエラーが発生します。
flash.display.Stage.fullScreenSourceRect:Rectangle property
このプロパティを使用すると、ステージのどの部分を画面全体に表示するかを指定できます。 このプロパティを指定すると、ハードウェアスケーリングモードも有効になります。 このプロパティは、ステージ内外のどこにでも設定できる矩形です。 フルスクリーンモードに移行する前に指定する必要があります。
フルスクリーンモードへの以降後にfullScreenSourceRectを調整しても、SWFの表示領域は変更されません。 また、指定した矩形の縦横比がユーザのモニターの縦横比と異なっている場合は、必要に応じて両脇に「バー」が追加されます。このバーの色は、そのSWFの背景色、またはHTMLで設定されたSWFの背景色と同じです。
ユーザがFlash Playerの設定でハードウェアスケーリングをオフにしているか、Flash Playerを実行しているマシンにハードウェアスケーリングで表示する機能が備わっていない場合、fullScreenSourceRectは無視され、通常のソフトウェア描画によるフルスクリーンモードが使用されます。
新しいフルスクリーンActionScriptを使用してムービーをパブリッシュしたときにエラーが出ないようにするには、インストールされているFlash CS3 ProfessionalまたはFlex SDKのバージョンを更新する必要があります。
Flash CS3 ProfessionalでActionScript 3.0を使用しているか、Flex BuilderでFlex 2.0.1 SDKを使用していれば、ActionScript 3.0クラスファイルで新しいフルスクリーンActionScriptがサポートされます。 何もする必要はありません。
Flash CS3 ProfessionalでActionScript 2.0を使用して、Flash 9のムービーをパブリッシュする場合は、ActionScript 2.0クラスファイルに新しいActionScriptプロパティが含まれているので、エラーは発生しません。 以前のバージョンのFlashとしてパブリッシュする場合は、多少不恰好な構文を使用することができます。
Stage["displayState"] = "fullScreen";
ただし、次の構文の方が簡単です。
Stage.displayState = "fullScreen";
ソフトウェア描画によるフルスクリーンモードの拡大/縮小動作は、ムービーのscaleMode設定によって決定されます。この設定はActionScript、または<object>タグおよび<embed>タグから行います。 デフォルトのscaleMode設定はshowAllです。この設定ではフルスクリーンモードでムービーが画面のサイズに拡大されますが、その縦横比は維持されます。 ムービーの拡大・縮小動作をプログラムで制御するには、scaleModeをnoScaleに設定します。 この場合、ムービーは拡大されませんが、ステージの幅と高さのプロパティがフルスクリーンモードで新しいステージサイズを示すように更新され、ステージのサイズ変更イベントハンドラが呼び出されます。
fullScreenSourceRectを指定してハードウェアスケーリングによるフルスクリーンモードを使用している場合は、SWFの拡大/縮小によってフルスクリーンモードの機能が影響を受けることはありません。
新しいフルスクリーンモードのActionScriptの使用例として、Flashムービーのフルスクリーンモードを切り替えることができるアイテムを含んでいるカスタムコンテキストメニューの追加方法を紹介します。Flashムービーを撮影し、以下のActionScriptをフレーム1に追加します。
//Rectangle is needed when using hardware scaling.
import flash.geom.Rectangle;
// functions to enter and leave full-screen mode
function goFullScreen()
{
Stage["displayState"] = "fullScreen";
}
// An alternate full screen function that uses hardware scaling to display the upper left corner of the stage in full screen.
function goScaledFullScreen(){
var screenRectangle:Rectangle = new Rectangle();
screenRectangle.x = 0;
screenRectangle.y = 0;
screenRectangle.width=Stage.width/2;
screenRectangle.height=Stage.height/2;
Stage["fullScreenSourceRect"] = screenRectangle;
Stage["displayState"] = "fullScreen";
}
function exitFullScreen()
{
Stage["displayState"] = "normal";
}
// function to enable, disable context menu items, based on which mode we are in.
function menuHandler(obj, menuObj)
{
if (Stage["displayState"] == "normal")
{
// if we're in normal mode, enable the 'go full screen' item, disable the 'exit' item
menuObj.customItems[0].enabled = true;
menuObj.customItems[1].enabled = false;
}
else
{
// if we're in full screen mode, disable the 'go full screen' item, enable the 'exit' item
menuObj.customItems[0].enabled = false;
menuObj.customItems[1].enabled = true;
}
}
// create a new context menu
var fullscreenCM:ContextMenu = new ContextMenu(menuHandler);
// hide the regular built-in items
fullscreenCM.hideBuiltInItems();
// now, add the items to enter and leave full screen mode
var fs:ContextMenuItem = new ContextMenuItem("Go Full Screen", goFullScreen);
fullscreenCM.customItems.push( fs );
var xfs:ContextMenuItem = new ContextMenuItem("Exit Full Screen", exitFullScreen);
fullscreenCM.customItems.push( xfs );
// now, attach the context menu to any movieclip in your movie.
// here we attach it to _root, (even though using _root is generally a bad idea,)
// so it will appear if you right click anywhere on the movie.
_root.menu = fullscreenCM;
import flash.display.Stage;
import flash.display.StageDisplayState;
import flash.display.*;
import flash.events.*;
import flash.geom.Rectangle;
// functions to enter and leave full screen mode
function goFullScreen(event:ContextMenuEvent):void
{
stage.displayState = StageDisplayState.FULL_SCREEN;
}
// An alternate full-screen function that uses hardware scaling to display the upper left corner of the stage in full screen.
function goScaledFullScreen(){
var screenRectangle:Rectangle = new Rectangle(0, 0, stage.stageWidth/2, stage.stageHeight/2);
stage.fullScreenSourceRect = screenRectangle;
stage.displayState = StageDisplayState.FULL_SCREEN;
}
function exitFullScreen(event:ContextMenuEvent):void
{
stage.displayState = StageDisplayState.NORMAL;
}
// function to enable and disable the context menu items,
// based on what mode we are in.
function menuHandler(event:ContextMenuEvent):void
{
if (stage.displayState == StageDisplayState.NORMAL)
{
event.target.customItems[0].enabled = true;
event.target.customItems[1].enabled = false;
}
else
{
event.target.customItems[0].enabled = false;
event.target.customItems[1].enabled = true;
}
}
// create the context menu, remove the built-in items,
// and add our custom items
var fullscreenCM:ContextMenu = new ContextMenu();
fullscreenCM.addEventListener(ContextMenuEvent.MENU_SELECT, menuHandler);
fullscreenCM.hideBuiltInItems();
var fs:ContextMenuItem = new ContextMenuItem("Go Full Screen" );
fs.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, goFullScreen);
fullscreenCM.customItems.push( fs );
var xfs:ContextMenuItem = new ContextMenuItem("Exit Full Screen");
xfs.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, exitFullScreen);
fullscreenCM.customItems.push( xfs );
// finally, attach the context menu to a movieclip
mc.contextMenu = fullscreenCM;
フルスクリーンモードを使用するには、新しいパラメータをHTMLの<object>タグと<embed>タグに追加する必要があります。 フルスクリーンモードを有効にした<object>タグと<embed>タグの例を次に示します。
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,18,0"
width="600" height="400" id="fullscreen" align="middle">
<param name="allowFullScreen" value="true" />
<param name="movie" value="fullscreen.swf" />
<param name="bgcolor" value="#333333" />
<embed src="fullscreen.swf" allowFullScreen="true" bgcolor="#333333" width="600" height="400"
name="fullscreen" align="middle" type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
フルスクリーンモードで新しい<object>タグパラメータと<embed>タグパラメータをサポートするために、新しいパブリッシュテンプレートを作成しました。このテンプレートはFlash CS3 Professionalに含まれています。 これは基本となる「Flashのみ」のテンプレートのバージョンですが、フルスクリーンモードを使用できるようにするために、適切なタグもHTMLに追加します。
Flash CS3 Professionalの起動。パブリッシュ設定ダイアログボックスの「HTML」タブで、テンプレートポップアップメニューから「Flash のみ - フルスクリーンサポート」を選択してムービーをパブリッシュします。 フルスクリーンのActionScriptが有効になります。
Flex Builderで使用するHTMLテンプレートも用意されています。 これらのテンプレートは、フルスクリーンモードをサポートするために正しい<object>と<embed>タグパラメータを追加する、デフォルトのHTMLテンプレート「express-installation」および「express-installation-with-history」の修正バージョンです。 サンプルのZIPアーカイブをダウンロードして解凍し、新しいテンプレートを入手します。
これらのテンプレートをFlex Builderプロジェクトで使用するには、次の手順を実行します。
ムービーをパブリッシュしてテストします。 次の手順を忘れずに実行してください。
allowFullScreen <object>/<embed>パラメータを追加し、これをtrueに設定します。ブラウザにテストムービーをロードします。 ムービー、またはムービークリップを右クリックしてカスタムコンテキストメニューを表示すると、フルスクリーンモードを開始する、または終了する項目が表示されます。 コンテキストメニューを使用してフルスクリーンモードに切り替えた場合は、コンテキストメニューを使用するか、キーボードのEscキーを押すか、フォーカスを別のウィンドウに切り替えることによってフルスクリーンモードを終了できます。
Adobe LabsのFull-Screen Demosページにアクセスして、コミュニティで提供されているデモをご覧ください。 新しいフルスクリーン機能を使用して作成したデモをコミュニティで共有する場合は、Full-Screen Demosページにデモのリンクを追加してください。