16.1.载入并播放视频

问题
我想渐进式下载视频并播放
问题
使用NetStream对象载入并播放视频,使用Video对象显示视频内容
讨论
ActionScript 3.0 需要多个类同时工作来载入和回放Flash视频。你必须使用NetStream对象载入视频并控制回放,但是NetStream类只关心如何读取数据,至于这些数据是什么内容并不知道,因此就需要Video对象,Video对象得到NetStream的数据并显示到屏幕上。

NetStream构造函数需要一个NetConnection对象作为参数,NetConnection对象关联将要播放的视频。当Flash视频来自于Flash Communication Server或Flash Media Server,NetConnection对象指向服务器,但是如果是下载渐进式视频内容则NetConnection对象的连接字符串为null。下面的代码构造一个NetConnection对象并初始化,用来下载渐进式视频,注意先引入flash.net.NetConnection类:
+展开
-ActionScript
var videoConnection:NetConnection = new NetConnection( );
videoConnection.connect(null);

一旦创建了NetConnection对象并调用了connect( )方法,再构造NetStream对象,把NetConnection对象引用传给NetStream构造器作为参数。下面的代码构造了个NetStream对象(先引入importedflash.net.NetStream):
+展开
-ActionScript
var videoStream:NetStream = new NetStream(videoConnection);


创建好NetStream对象后,创建Video对象,并把两者关联起来。

flash.media.Video类是个可视化对象,因此可以添加到显示列表,下面的代码构造了一个Video对象并添加到显示列表:
+展开
-ActionScript
var video:Video = new Video( );
addChild(video);

接着调用Video对象的attachNetStream( )方法,和NetStream对象关联起来:
+展开
-ActionScript
video.attachNetStream(videoStream);

NetStream类定义了一个play( )方法用于载入并开始播放Flash视频,参数可以是相对或绝对URL。

下面的代码表示载入并播放名为example.flv的视频:
+展开
-ActionScript
videoStream.play("example.flv");

如果.flv文件和swf文件在同一个域里,play( )调用不会被Flash Player安全机制拒绝,但是如果在不同的域时就需要一个安全策略文件。

当缓冲足够时,视频会被自动播放,我们可控制缓冲和监视载入进度,这些将在第16.7章.讨论。

如果flv 文件是嵌入进来的元数据,则需要处理元事件,这些将在第16.4 章.讨论。另外如果flv 文件包含提示点,则需要处理提示点事件,这些将在第16.8 章.讨论。

加支付宝好友偷能量挖...


评论(0)网络
阅读(69)喜欢(0)flash/flex/fcs/AIR