FLASHのお勉強 ーアクションスクリプトの実践的事始めー

(55) FLVPlayback(as3.0)で動画(ビデオ)を見せる   2007/12/31
 複数の動画(外部flvファイル)をコンボボックスで切り替えて再生させると言うようなVideoプレイヤーをFLVPlayback(as3.0)を使って作成してみることにする。 MediaPlaybackやmediaDisplayを使った動画再生方法については、既に勉強しているので、ここでは、FLVPlayback(as3.0)を使ってみようと思う。 自前でSKINを作ることもできるが、いくつかのSKINが用意されているのでこれをそのまま使うことにする。
 なお、自動で連続的に再生を行い、全部再生し終わったら最初の動画から再生を繰り返すタイプのものも作成してみたので、これについても解説したい。 このタイプもFLVPlaybackを使うが、skinは使わず、VideoPlayerクラスを使う。
SAMPLE
ステージの準備
●320*200、背景色青(好みの色)のステージ(12fps)を設定
●コンポーネントウインドウからComboBoxをライブラリーにドラッグ&ドロップし、登録する
●コンポーネントウインドウからFLVPlaybackをステージにドラッグ&ドロップし、座標(4,4)に配置し、インスタンス名をplayerとする
●FLVPlaynackをクリックし、画面下部のパラメータタブで、skinの中から好みのものを選ぶ
 その他、scaleMode(ここではexactFit)、skin(SkinUnderPlaySeekMute.swf)、skin背景色(灰色)、ボリューム(0.5)などを
 設定する(これらは、スクリプトで設定することも可能)
●プロパティータブの「ドキュメントクラス」のところに、asを記述するクラス名を記述し関連付ける
 (ここではvideoPlay_combo)
●このswfファイルを格納するディレクトリに動画ファイル、SkinUnderPlaySeekMute.swfを格納する
  ここでの動画ファイルは、http://www.puntopower.com/から引用した(現在は掲載されていない?)
スクリプトvideoPlay_combo.asに記述
package {
        import fl.video.*;
        import flash.events.*;
        import fl.controls.ComboBox;
        import flash.display.Sprite;

        public class videoPlay_combo extends Sprite {
                private var videoNum:Number = 3;
                private var video:Array = ["punto1.flv","punto2.flv","punto3.flv"];
                private var cbItem =["Fiat Punto is an Amazing Car!!","Fiat Punt is compact
                      but makes Big Run","Fiat Punto in the Omosiro Rally"];
                private var $prompt:String ="VIDEO選択";
                private var cbx:Number = 40;//コンボボックスのx座標
                private var cby:Number = 260;//y座標
                private var cbw:Number = 250;//幅
                private var cbh:Number = 24;//高さ
                private var combo = createComboBox();
                
                public function videoPlay_combo() {
                        function readyHandler(event:VideoEvent):void {
                                player.pause();
                                player.playWhenEnoughDownloaded();
                        }
                        player.addEventListener(VideoEvent.READY, readyHandler);
                }
                
                private function videoPlay(event:Event) {
                        var selectedLabel:String = event.currentTarget.selectedItem.label.toString();
                        var selectedData:Number = event.currentTarget.selectedItem.data;
                        player.source = video[selectedData];
                }
                
                private function createComboBox():void {
                        var cb:ComboBox=new ComboBox();
                        cb.setSize(cbw,cbh);
                        cb.x=cbx;
                        cb.y=cby;
                        cb.prompt = $prompt;
                        for (var i:uint=0; i<videoNum; i++) {
                                cb.addItem( {label:cbItem[i], data:i } );
                        }
                        addChild(cb);
                        cb.addEventListener(Event.CHANGE, videoPlay);
                }
        }
}
スクリプトの説明
import
  
必要なパッケージのインポート
videoNum
  videoファイルの数
private var video:Array = ["punto1.flv","punto2.flv","punto3.flv"];
  videoファイル名を配列で管理
private var cbItem =["Fiat Punto is Amazing Car!!","Fi*******
  videoの題名(ここでは適当につけている)を配列で管理
private var combo = createComboBox();
  createComboBox関数でコンボボックスを作成
function readyHandler(event:VideoEvent):void {
  以下の関数は、videoのsource(ファイル名)がアクティブになり、再生に十分なロードができた段階で再生を開始するスクリプトで、
  adobeのDEVELOPER CONNECTION(http://www.adobe.com/devnet/flash/articles/flvplayback_programming.html)から引用
private function videoPlay(event:Event) {
  以下の関数は、コンボボックスで何かが選択されたら、その項目名と、データ番号を取得し、その番号に相当するvideoを
  sourceとしてアクティブにする (項目名はここでは使用していない)
private function createComboBox():void {
  以下の関数はコンボボックスの作成関数である (詳細は「フォーム用コンボボックスの動的作成」を参照のこと)
連続自動再生プレイヤー
ステージの準備
●300*200、背景色青(好みによる)
●ライブラリーに FLVPlayback を格納
●プロパティータグの「ドキュメントクラス」のところに、asを記述するクラス名を記述し関連付ける (ここではvideoPlay_auto)

左サンプルの音声は、player.volume = 0; で消しているが
0のところを、0−1の間で設定すれば数値に対応した音量で音声が出る
スクリプトvideoPlay_auto.asに記述
package {
        import fl.video.*;
        import flash.events.*;
        import flash.display.Sprite;
        public class videoPlay_auto extends Sprite {
                private var videoNum:Number = 3;
                private var video:Array = ["punto1.flv","punto2.flv","punto3.flv"];
                private var videoTitle:Array = [];
                private var player = new VideoPlayer();
                private var videoPath:String;
                private var n:Number;

                public function videoPlay_auto() {
                        player.scaleMode = VideoScaleMode.EXACT_FIT;//MAINTAIN_ASPECT_RATIO
                        player.width = 300;
                        player.height =200;
                        player.volume = 0;

                        n = 0;
                        videoPath = video[n].toString();
                        addChild(player);
                        player.play(videoPath);

                        function videoChange(event:VideoEvent) {
                                if (n<videoNum-1) {
                                        n++;
                                        videoPath = video[n].toString();
                                        player.play(videoPath);
                                } else {
                                        n=0;
                                        videoPath = video[n].toString();
                                        player.play(videoPath);
                                }
                        }
                        player.addEventListener(VideoEvent.COMPLETE, videoChange);
                }
        }
}
 
flashirohaサイト内  Web全体 
HOME   お勉強総リスト