FLEX 3 有关视频加载处理1

发布时间:2019-09-18 07:24:14编辑:auto阅读(1836)

    FLEX 3 有关视频加载处理1
    简单介绍下加载视频的步骤:
    1.       创建一个NetConnection 对象,它的作用是连接到远程服务器,调用命令,播放视频
    2.       创建一个NetStream对象,它的作用是通过netconnection对象提供的连接,打开FLASH player 与服务器的单向流连接
    3.       创建一个Video对象,直接显示视频
    具体的一个例子如下:
    1.       FLEX BUILD 里新建一个工程,命名为没有myvideo
    2.       输入以下代码
    package {

        import flash.display.Sprite;

        import flash.events.AsyncErrorEvent;

        import flash.media.Video;

        import flash.net.NetConnection;

        import flash.net.NetStream;

     

        public class myvideo extends Sprite

        {

           public function myvideo()

           {

               var nc:NetConnection = new NetConnection();

               nc.connect(null);

              

          

              

       

               var ns:NetStream = new NetStream(nc);

               ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR,asyncErrorHandle);

          

     

               ns.play("1.flv");

              

          

               var vd:Video = new Video();

               vd.attachNetStream(ns);

               this.addChild(vd);

           }

           private function asyncErrorHandle(e:AsyncErrorEvent):void

           {

           trace("Error!"); 

           }

        }

    }

     

    以上是   我按照书上说的做了个加载本地视频文件的类,结果报了个错,如下图:

     

     

    2.       后来上网查了查,说要导入一个CUSTOM的类,但是我也不知道上哪找去,后来一想在FLASH CS 3 里测试结果如何呢?我在FLASH CS 3 里做了如下的测试
    3.       首先建立一个myvideo的类文件,如下图:

     

    然后建立一个myvideoFLA文件并关联刚才的类文件如下图:

     

     

    按下ctrl + Enter 测试能正常加载视频文件,但是也报错了,说明是加载异常。如下图

     

     

    后来想了想,应该添加上回调函数,按照书上后面讲的回调函数的写法,为ns添加了个回调函数,代码

     

     

        var customClient:Object = new Object();

        customClient.onMetaData = metadataHandle ;

    定义回调函数对象

     

      添加到ns对象上

     ns.client = customClient ;

    分别在FLEX 3Flash CS 3再测试,结果如下所示:

     

     

     

     

     

     

    OK ,已经不再报错了。

     

    总结:报错的原因没有定义回调函数,这是书中的一个小的错误,建议广大读者注意!我的参考书是《完全手册 FLASH /FLEX 3 ACTION SCRIPT 3.0 交互式开发详解》

     

     

    修改后的完整代码如下:

     

    package {

        import flash.display.Sprite;

        import flash.events.AsyncErrorEvent;

        import flash.media.Video;

        import flash.net.NetConnection;

        import flash.net.NetStream;

     

        public class myvideo extends Sprite

        {

           public function myvideo()

           {

                //创建连接对象

               var nc:NetConnection = new NetConnection();

               nc.connect(null);

               //定义处理onMetaData回调函数的对象,如果不定义会出错,下面会详细讲解

               var customClient:Object = new Object();

               customClient.onMetaData = metadataHandle ;

              

                //创建Stream对象

               var ns:NetStream = new NetStream(nc);

               ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR,asyncErrorHandle);

               ns.client = customClient ;

     

               ns.play("1.flv");  //调用本地(或服务器)的视频文件

              

           //创建Video对象

               var vd:Video = new Video();

               vd.attachNetStream(ns);

               this.addChild(vd);

           }

    //加载异常处理     

    private function asyncErrorHandle(e:AsyncErrorEvent):void

           {

           trace("Error!"); 

           }

    //回调函数处理     

    private function metadataHandle(metadata:Object):void

           {

               trace(metadata.width);

           }

        }

    }

     

     

关键字