先日、FlashでPlayerを制作したので、
覚書として記載したいとおもいます。
内容は、youtubeのような見た目のストリーミング用プレーヤー
下のUIでの操作はもちろん、画面をクリックすれば再生・一時停止と操作ができます。
Action Scriptしか掲載しませんが、後はボタンに名前をつけるだけでOKです。
いろいろ調べて自分なりに改造してみました。
flashで悩んでいる人のためになればとおもいます。
------------------------------------------------------------------
※ストリーミング再生用スクリプト
//動画データの取得------------------------------------------
var movie = "eotv.flv";//←変更するのここだけ
var my_nc:NetConnection = new NetConnection();
my_nc.connect(null);
var my_ns:NetStream = new NetStream(my_nc);//ストリーミング宣言
_root.My_video.attachVideo(my_ns);//ストリーミングMCの新規作成
_root.My_video.smoothing = true;//←なにこれ?
//変数の設定------------------------------------------------
var playFlg = true;//動画が0からストリームされているか否か
var pause_flag = false;//一時停止か否か(シークイベント用)
var bul01 = true;//画面中央ボタンの条件用
var my_Sound = new Sound(this);//動画内(_root.)に、音声情報の宣言
var nowVol = 100;//音声の初期値(%)
var maxVol = _root.volumebar._width;//音量の最大値
var minVol = _root.volumebar._x;//音量の最小値
var maxSeek = _root.seekbar._width;//再生時間の最大値
var minSeek = _root.seekbar._x;//再生時間の最小値
var seek_per;//シーク開始時の進度
var seek_point;//メモリ用MCのx軸値
//各ボタン設定----------------------------------------------
//再生------------------------------------------------------
playBt.onRelease = function() {
if (playFlg == true) {
//初期状態からの再生の場合
my_ns.play(movie);
playFlg = false;
} else {
//一時停止からの復帰
my_ns.pause();
}
//デフォルトアクション
this._visible = false;
_root.playbotton.gotoAndPlay(9);
_root.seek_move();
};
//一時停止--------------------------------------------------
pauseBt.onRelease = function() {
_root.playBt._visible = true;
my_ns.pause();
_root.playbotton.gotoAndPlay(1);
delete _root.nowtime_checker.onEnterFrame;//現在の再生時間計算アクションのリセット
delete _root.seek_checker.onEnterFrame;//seek_contの移動アクションのリセット
};
//停止------------------------------------------------------
stopBt.onPress = function() {
my_ns.seek(0);
my_ns.pause(true);//trueにすることで、多重に押したときの誤再生を防ぎます
playFlg = true;
_root.playBt._visible = true;
_root.playbotton.gotoAndPlay(1);
delete _root.nowtime_checker.onEnterFrame;
delete _root.seek_checker.onEnterFrame;
};
//画面中央---------------------------------------------------
playstop.onRelease = function() {
if (playFlg == true) {
//初期状態からの再生の場合
my_ns.play(movie);
_root.playbotton.gotoAndPlay(9);
_root.playBt._visible = false;
_root.seek_move();
playFlg = false;
} else {
//初期状態以外からの再生の場合
if (bul01 == true) {
//一時停止
my_ns.pause();
_root.playbotton.gotoAndPlay(1);
_root.playBt._visible = true;
bul01 = false;
delete _root.nowtime_checker.onEnterFrame;
delete _root.seek_checker.onEnterFrame;
} else {
//再生
my_ns.pause();
_root.playbotton.gotoAndPlay(9);
_root.playBt._visible = false;
bul01 = true;
_root.seek_move();
}
}
};
//サウンド設定-----------------------------------------------
vol_cont.onPress = function() {
_root.vol_cont.startDrag(true,volumebar._x,this._y,volumebar._x+volumebar._width,this._y);//音量つまみの動ける範囲
_root.vol_cont.onEnterFrame = function() {
var newVol = _root.vol_cont._x-minVol;//今現在の音量の算出
nowVol = Math.floor((newVol/maxVol)*100);現在の音量の代入
my_Sound.setVolume(nowVol);上記算出結果の反映
};
};
vol_cont.onMouseUp = function() {
this.stopDrag();//stopDrag設定
delete vol_cont.onEnterFrame;
};
//動画の総再生時間取得---------------------------------------
my_ns.onMetaData = function(info:Object) {
totalTimes = info.duration;
};
//現在の再生時間の取得---------------------------------------
function nowtimecheck() {
_root.onEnterFrame = function() {
nowTimes = my_ns.time;
};
}
//シークバーが時間に合わせて動く仕組み-----------------------
function seek_move() {
_root.seek_checker.onEnterFrame = function() {
playingFlg = true;
seek_per = my_ns.time/totalTimes*100;
_root.seek_cont._x = _root.seekbar._x+(_root.seekbar._width)*(seek_per/100);
};
}
//シークスライド---------------------------------------------
_root.seek_cont.onPress = function() {
delete _root.seek_checker.onEnterFrame;
my_ns.pause(true);
_root.playbotton.gotoAndPlay(1);
_root.playBt._visible = true;
playFlg = false;
bul01 = false;
this.startDrag(false,_root.seekbar._x,this._y,_root.seekbar._x+_root.seekbar._width,this._y);
_root.seek_cont.onMouseMove = function() {
if (this._x+this._width>_root.seekbar._x+_root.seekbar._width) {
this._x = _root.seekbar._x+_root.seekbar._width-this._width;
}
updateAfterEvent();
};
_root.seekbar.onEnterFrame = function() {
if (_root.seek_cont._x>_root.seekbar._width+_root.seekbar._x) {
seek_point = _root.seekbar._width;
} else {
seek_point = _root.seek_cont._x-_root.seekbar._x;
}
seek_per = Math.round((seek_point/_root.seekbar._width)*100);
if (seek_per>=100) {
seek_per = 100;
} else if (seek_per<=0) {
seek_per = 0;
}
my_ns.seek(totalTimes*(seek_per/100));
};
};
_root.seek_cont.onRelease = _root.seek_cont.onReleaseOutside=function () {
seek_move();
this.stopDrag();
delete _root.seekbar.onEnterFrame;
delete this.onMouseMove;
}
ホームページ制作のFlash Player
1981年5月29日大分に生まれ、22年間過ごした後、上京し大手企業に就職。プログラムやデザインの勉強をし、その後独立。現在ではSEOや売上げの上がるホームページのセミナーを行うなど、コンサルティングも行っている。