AS3にて全画面で動画を再生させる際の注意点
Flashでフルスクリーンで動画を表示したい場合、
動画の再生に、FLVPlayback
を使っているかVideo
を使っているか、によって挙動が変わってくるようです。
■まず、FLVPlayback
を使っている場合、
ステージに表示している動画は問答無用で画面にフィットしたフルスクリーンで表示されます。
一応、stage
のプロパティである、stageFocusRect
を使うことで表示する位置を調整できたりしますが、
動画のサイズは強制的にモニタのサイズになってしまうようなので、まず使い物にならないです。
で、画面いっぱいに動画が表示されてしまうと、その他のコンテンツは動画の下に隠れてしまいます。
なので、自前で再生バーなどをつけていても見えなくなってしまいます。
というわけで、この場合は標準のスキンを使用する必要があります。
FLVPlayback
のプロパティでskin
があるので、それを使って、
video.skin = "MinimaFlatCustomColorPlayBackSeekCounterVolMuteFull.swf";
などと指定します。
すると、フルスクリーンになっても、その動画の下にコントローラーがくっつく形となります。
この拡大は、stage
のscaleMode
プロパティは関係なく、
また、FLVPlayback
のscaleMode
プロパティも関係ありません。
(FLVPlayback
のscaleMode
プロパティは、動画枠内で実際の動画を拡大縮小するか、を決めるもの)
■次に、Video
の場合。
こちらの場合は、動画部分はその他の部分と同じように拡大縮小されます。
拡大するかどうかは、stage
のscaleMode
のプロパティで指定した仕様に準じます。
この場合、コントローラーは標準のものは使用できないので、自前で用意する必要があります。
■まとめ
単純に動画だけを大きくしたいのであれば、FLVPlayback
を使ったほうが楽だと思われます。
ですが、コントローラーをカスタマイズしたい、など、自由度が高いものは、Video
になります。
今回使用した検証コードは以下です。
FLVPlayback
var video:FLVPlayback = new FLVPlayback();
video.skin = "MinimaFlatCustomColorPlayBackSeekCounterVolMuteFull.swf";
video.width = 480;
video.height = 270;
this.addChild(video);
Video
private var _connect :NetConnection;
private function setVideo():void{
_connect = new NetConnection();
_connect.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
_connect.connect(null);
}
private function netStatusHandler(e:NetStatusEvent):void {
var stream:NetStream = new NetStream(_connect);
var video:Video = new Video();
video.width = 480;
video.height = 270;
video.attachNetStream(stream);
stream.play("sample.f4v");
this.addChild(video);
}