zoukankan      html  css  js  c++  java
  • 制作简单视频播放器

    1、构建视频NetConnection和NetStream;
    2、音量控制用soundTransform(这 个让我耗了一些精力,在AS2中可以setvolume,在AS3就不行了);
    3、暂停用pause(),恢复回放暂停的视频流用resume();
    4、接收视频信息用onMetaData(如视频总时间data.duration);
    5、侦听视频流的开始和结束用NetStatusEvent.NET_STATUS,info.code如果 为"NetStream.Play.Stop",则可重播或播放新的视频;
    //以上只是一些最基本的视频知识,希望对初学AS3的人能有所帮助,这将是我最大的欣慰。
    [效 果]


    [步骤]
    第一步:创建播放按钮、暂停按钮,实例名分别为play_btn、pause_btn;
    第二步:画两个长矩形,分别转为影片剪辑,实例名分别为jzjd_mc、bfjd_mc,作为加载进度条与播放进度条;
    第三步:在库中右键选择“新建视频”,在弹出的对话框中点选“视频(受ActionScript控制)”,拖到场景中,实例名为vid;
    第四步:在场景中拉两个动态文本,实例名分别为bftxt(显示播放时间)、zcdtxt(显示总时间);
    第五步:画一个长矩形,转为影片剪辑,作为音量条,实例名为ylt_mc;
    第六步:画一个小圆,转为影片剪辑,作为音量滑块,实例名为ylhk_mc;
    第七步:在帧上写如下代码:
    [代码]
    //创建一个 NetConnection 对 象
    var nc:NetConnection=new NetConnection();
    /*如果连接到没有使用服务器的FLV 文件,则通过向 connect() 方法传递值
    null,来播放流式 FLV 文件*/
    nc.connect(null);
    /*创建一个 NetStream 对象(该对象将 NetConnection 对象作为参数)并
    指定要加载的 FLV 文件*/
    var ns:NetStream=new NetStream(nc);
    ns.play("http://www.helpexamples.com/flash/video/cuepoints.flv");
    /*使用 Video 类的 attachNetStream() 方法附加以前创建的 NetStream
    对象(视频实例名为vid)*/
    vid.attachNetStream(ns);
    //音量初始值
    var yl:Number=0.5;
    var nsyl:SoundTransform =new SoundTransform();
    //nsyl.volume=yl
    //播放进度与加载进度影片缩放为0
    bfjd_mc.scaleX=jzjd_mc.scaleX=0;
    //申明变量播放与下载百分比以及总时间(秒)的初始值为0
    var bfbfb:int=0;
    var xzbfb:int=0;
    var _duration:Number=0;
    //指定在其上调用回调方法的对象
    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);
    //忽略错误
    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;
    //恢复回放暂停的视频流
    ns.resume();
    addEventListener(Event.ENTER_FRAME,gx);
    }
    //接收在正播放的 FLV 文件中嵌入的描述性信息时调度
    function onMetaData(data:Object):void {
    _duration=data.duration;
    }
    //申明变量播放信号
    var bfxh:String;
    //侦听视频流的开始和末尾
    ns.addEventListener(NetStatusEvent.NET_STATUS, statusHandler);
    function statusHandler(event:NetStatusEvent):void {
    bfxh=event.info.code;
    }
    //不断更新进度与文本的显示
    addEventListener(Event.ENTER_FRAME,gx);
    function gx(event:Event):void {
    if (ns.bytesLoaded>0) {
    //加载进度
    xzbfb=ns.bytesLoaded/ns.bytesTotal*100;
    jzjd_mc.scaleX=xzbfb/100;
    }
    if (_duration>0 && ns.time>0) {
    //播放进度
    bfbfb=ns.time/_duration*100;
    bfjd_mc.scaleX=bfbfb/100;
    }
    if (bfxh=="NetStream.Play.Stop") {
    //播放完毕时的设置
    bfbfb=0;
    bfjd_mc.scaleX=0;
    ns.pause();
    ns.seek(0);//将播放头置于视频开始处
    play_btn.visible=true;
    pause_btn.visible=false;
    }
    //文本显示内容
    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;
    }
    //音量滑块拖 动控制
    var fw:Rectangle=new Rectangle(345,328,50,0);//拖动范围
    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();
    }
  • 相关阅读:
    操作系统六文件管理
    Educational Codeforces Round 38 (Rated for Div. 2) ABCD
    51nod 1100 斜率最大
    51nod 最小方差
    51nod 1065 最小正子段和
    P1280 尼克的任务
    牛客小白月赛2
    Codeforces Round #210 (Div. 1) B 二分+dp
    江西财经大学第一届程序设计竞赛
    51nod 1596 搬货物
  • 原文地址:https://www.cnblogs.com/top5/p/1667791.html
Copyright © 2011-2022 走看看