制作简单视频播放器
1、構(gòu)建視頻NetConnection和NetStream;
2、音量控制用soundTransform(這 個(gè)讓我耗了一些精力,在AS2中可以setvolume,在AS3就不行了);
3、暫停用pause(),恢復(fù)回放暫停的視頻流用resume();
4、接收視頻信息用onMetaData(如視頻總時(shí)間data.duration);
5、偵聽視頻流的開始和結(jié)束用NetStatusEvent.NET_STATUS,info.code如果 為"NetStream.Play.Stop",則可重播或播放新的視頻;
//以上只是一些最基本的視頻知識(shí),希望對(duì)初學(xué)AS3的人能有所幫助,這將是我最大的欣慰。
[效 果]
無
[步驟]
第一步:創(chuàng)建播放按鈕、暫停按鈕,實(shí)例名分別為play_btn、pause_btn;
第二步:畫兩個(gè)長(zhǎng)矩形,分別轉(zhuǎn)為影片剪輯,實(shí)例名分別為jzjd_mc、bfjd_mc,作為加載進(jìn)度條與播放進(jìn)度條;
第三步:在庫中右鍵選擇“新建視頻”,在彈出的對(duì)話框中點(diǎn)選“視頻(受ActionScript控制)”,拖到場(chǎng)景中,實(shí)例名為vid;
第四步:在場(chǎng)景中拉兩個(gè)動(dòng)態(tài)文本,實(shí)例名分別為bftxt(顯示播放時(shí)間)、zcdtxt(顯示總時(shí)間);
第五步:畫一個(gè)長(zhǎng)矩形,轉(zhuǎn)為影片剪輯,作為音量條,實(shí)例名為ylt_mc;
第六步:畫一個(gè)小圓,轉(zhuǎn)為影片剪輯,作為音量滑塊,實(shí)例名為ylhk_mc;
第七步:在幀上寫如下代碼:
[代碼]
//創(chuàng)建一個(gè) NetConnection 對(duì) 象
var nc:NetConnection=new NetConnection();
/*如果連接到?jīng)]有使用服務(wù)器的FLV 文件,則通過向 connect() 方法傳遞值
null,來播放流式 FLV 文件*/
nc.connect(null);
/*創(chuàng)建一個(gè) NetStream 對(duì)象(該對(duì)象將 NetConnection 對(duì)象作為參數(shù))并
指定要加載的 FLV 文件*/
var ns:NetStream=new NetStream(nc);
ns.play("http://www.helpexamples.com/flash/video/cuepoints.flv");
/*使用 Video 類的 attachNetStream() 方法附加以前創(chuàng)建的 NetStream
對(duì)象(視頻實(shí)例名為vid)*/
vid.attachNetStream(ns);
//音量初始值
var yl:Number=0.5;
var nsyl:SoundTransform =new SoundTransform();
//nsyl.volume=yl
//播放進(jìn)度與加載進(jìn)度影片縮放為0
bfjd_mc.scaleX=jzjd_mc.scaleX=0;
//申明變量播放與下載百分比以及總時(shí)間(秒)的初始值為0
var bfbfb:int=0;
var xzbfb:int=0;
var _duration:Number=0;
//指定在其上調(diào)用回調(diào)方法的對(duì)象
var _client:Object=new Object();
_client.onMetaData=onMetaData;
ns.client=_client;
//按鈕可見性與添加偵聽事 件
play_btn.visible=false;
pause_btn.visible=true;
pause_btn.addEventListener(MouseEvent.CLICK, zt);
play_btn.addEventListener(MouseEvent.CLICK, bf);
//忽略錯(cuò)誤
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
function asyncErrorHandler(event:AsyncErrorEvent):void {
}
//暫停
function zt(event:MouseEvent):void {
play_btn.visible=true;
pause_btn.visible=false;
//視頻暫停
ns.pause();
}
//播放
function bf(event:MouseEvent):void {
play_btn.visible=false;
pause_btn.visible=true;
//恢復(fù)回放暫停的視頻流
ns.resume();
addEventListener(Event.ENTER_FRAME,gx);
}
//接收在正播放的 FLV 文件中嵌入的描述性信息時(shí)調(diào)度
function onMetaData(data:Object):void {
_duration=data.duration;
}
//申明變量播放信號(hào)
var bfxh:String;
//偵聽視頻流的開始和末尾
ns.addEventListener(NetStatusEvent.NET_STATUS, statusHandler);
function statusHandler(event:NetStatusEvent):void {
bfxh=event.info.code;
}
//不斷更新進(jìn)度與文本的顯示
addEventListener(Event.ENTER_FRAME,gx);
function gx(event:Event):void {
if (ns.bytesLoaded>0) {
//加載進(jìn)度
xzbfb=ns.bytesLoaded/ns.bytesTotal*100;
jzjd_mc.scaleX=xzbfb/100;
}
if (_duration>0 && ns.time>0) {
//播放進(jìn)度
bfbfb=ns.time/_duration*100;
bfjd_mc.scaleX=bfbfb/100;
}
if (bfxh=="NetStream.Play.Stop") {
//播放完畢時(shí)的設(shè)置
bfbfb=0;
bfjd_mc.scaleX=0;
ns.pause();
ns.seek(0);//將播放頭置于視頻開始處
play_btn.visible=true;
pause_btn.visible=false;
}
//文本顯示內(nèi)容
bftxt.text=Math.round(ns.time/60)+":"+Math.round(ns.time%60);
zcdtxt.text=Math.round(_duration/60)+":"+Math.round(_duration%60);
//音量控制
yl=(ylhk_mc.x-345)/50;
ylt_mc.scaleX=yl;
nsyl.volume =yl;
ns.soundTransform =nsyl;
}
//音量滑塊拖 動(dòng)控制
var fw:Rectangle=new Rectangle(345,328,50,0);//拖動(dòng)范圍
ylhk_mc.addEventListener(MouseEvent.MOUSE_DOWN,ylhkax);
ylhk_mc.addEventListener(MouseEvent.MOUSE_UP,ylhksk);
stage.addEventListener(MouseEvent.MOUSE_UP,ylhksk);
function ylhkax(event:MouseEvent):void {
ylhk_mc.startDrag(false,fw);
}
function ylhksk(event:MouseEvent):void {
ylhk_mc.stopDrag();
}
2、音量控制用soundTransform(這 個(gè)讓我耗了一些精力,在AS2中可以setvolume,在AS3就不行了);
3、暫停用pause(),恢復(fù)回放暫停的視頻流用resume();
4、接收視頻信息用onMetaData(如視頻總時(shí)間data.duration);
5、偵聽視頻流的開始和結(jié)束用NetStatusEvent.NET_STATUS,info.code如果 為"NetStream.Play.Stop",則可重播或播放新的視頻;
//以上只是一些最基本的視頻知識(shí),希望對(duì)初學(xué)AS3的人能有所幫助,這將是我最大的欣慰。
[效 果]
無
[步驟]
第一步:創(chuàng)建播放按鈕、暫停按鈕,實(shí)例名分別為play_btn、pause_btn;
第二步:畫兩個(gè)長(zhǎng)矩形,分別轉(zhuǎn)為影片剪輯,實(shí)例名分別為jzjd_mc、bfjd_mc,作為加載進(jìn)度條與播放進(jìn)度條;
第三步:在庫中右鍵選擇“新建視頻”,在彈出的對(duì)話框中點(diǎn)選“視頻(受ActionScript控制)”,拖到場(chǎng)景中,實(shí)例名為vid;
第四步:在場(chǎng)景中拉兩個(gè)動(dòng)態(tài)文本,實(shí)例名分別為bftxt(顯示播放時(shí)間)、zcdtxt(顯示總時(shí)間);
第五步:畫一個(gè)長(zhǎng)矩形,轉(zhuǎn)為影片剪輯,作為音量條,實(shí)例名為ylt_mc;
第六步:畫一個(gè)小圓,轉(zhuǎn)為影片剪輯,作為音量滑塊,實(shí)例名為ylhk_mc;
第七步:在幀上寫如下代碼:
[代碼]
//創(chuàng)建一個(gè) NetConnection 對(duì) 象
var nc:NetConnection=new NetConnection();
/*如果連接到?jīng)]有使用服務(wù)器的FLV 文件,則通過向 connect() 方法傳遞值
null,來播放流式 FLV 文件*/
nc.connect(null);
/*創(chuàng)建一個(gè) NetStream 對(duì)象(該對(duì)象將 NetConnection 對(duì)象作為參數(shù))并
指定要加載的 FLV 文件*/
var ns:NetStream=new NetStream(nc);
ns.play("http://www.helpexamples.com/flash/video/cuepoints.flv");
/*使用 Video 類的 attachNetStream() 方法附加以前創(chuàng)建的 NetStream
對(duì)象(視頻實(shí)例名為vid)*/
vid.attachNetStream(ns);
//音量初始值
var yl:Number=0.5;
var nsyl:SoundTransform =new SoundTransform();
//nsyl.volume=yl
//播放進(jìn)度與加載進(jìn)度影片縮放為0
bfjd_mc.scaleX=jzjd_mc.scaleX=0;
//申明變量播放與下載百分比以及總時(shí)間(秒)的初始值為0
var bfbfb:int=0;
var xzbfb:int=0;
var _duration:Number=0;
//指定在其上調(diào)用回調(diào)方法的對(duì)象
var _client:Object=new Object();
_client.onMetaData=onMetaData;
ns.client=_client;
//按鈕可見性與添加偵聽事 件
play_btn.visible=false;
pause_btn.visible=true;
pause_btn.addEventListener(MouseEvent.CLICK, zt);
play_btn.addEventListener(MouseEvent.CLICK, bf);
//忽略錯(cuò)誤
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
function asyncErrorHandler(event:AsyncErrorEvent):void {
}
//暫停
function zt(event:MouseEvent):void {
play_btn.visible=true;
pause_btn.visible=false;
//視頻暫停
ns.pause();
}
//播放
function bf(event:MouseEvent):void {
play_btn.visible=false;
pause_btn.visible=true;
//恢復(fù)回放暫停的視頻流
ns.resume();
addEventListener(Event.ENTER_FRAME,gx);
}
//接收在正播放的 FLV 文件中嵌入的描述性信息時(shí)調(diào)度
function onMetaData(data:Object):void {
_duration=data.duration;
}
//申明變量播放信號(hào)
var bfxh:String;
//偵聽視頻流的開始和末尾
ns.addEventListener(NetStatusEvent.NET_STATUS, statusHandler);
function statusHandler(event:NetStatusEvent):void {
bfxh=event.info.code;
}
//不斷更新進(jìn)度與文本的顯示
addEventListener(Event.ENTER_FRAME,gx);
function gx(event:Event):void {
if (ns.bytesLoaded>0) {
//加載進(jìn)度
xzbfb=ns.bytesLoaded/ns.bytesTotal*100;
jzjd_mc.scaleX=xzbfb/100;
}
if (_duration>0 && ns.time>0) {
//播放進(jìn)度
bfbfb=ns.time/_duration*100;
bfjd_mc.scaleX=bfbfb/100;
}
if (bfxh=="NetStream.Play.Stop") {
//播放完畢時(shí)的設(shè)置
bfbfb=0;
bfjd_mc.scaleX=0;
ns.pause();
ns.seek(0);//將播放頭置于視頻開始處
play_btn.visible=true;
pause_btn.visible=false;
}
//文本顯示內(nèi)容
bftxt.text=Math.round(ns.time/60)+":"+Math.round(ns.time%60);
zcdtxt.text=Math.round(_duration/60)+":"+Math.round(_duration%60);
//音量控制
yl=(ylhk_mc.x-345)/50;
ylt_mc.scaleX=yl;
nsyl.volume =yl;
ns.soundTransform =nsyl;
}
//音量滑塊拖 動(dòng)控制
var fw:Rectangle=new Rectangle(345,328,50,0);//拖動(dòng)范圍
ylhk_mc.addEventListener(MouseEvent.MOUSE_DOWN,ylhkax);
ylhk_mc.addEventListener(MouseEvent.MOUSE_UP,ylhksk);
stage.addEventListener(MouseEvent.MOUSE_UP,ylhksk);
function ylhkax(event:MouseEvent):void {
ylhk_mc.startDrag(false,fw);
}
function ylhksk(event:MouseEvent):void {
ylhk_mc.stopDrag();
}
轉(zhuǎn)載于:https://www.cnblogs.com/top5/archive/2010/02/12/1667791.html
總結(jié)
- 上一篇: yapi 插件_精神多了,当Swagge
- 下一篇: java xlsx怎么转换成excel格