您好!欢迎您光临本站! 体育 I 论坛 I 交友 I

会员注册

I

本站搜索

I

收藏本站

当前位置:首页 >>>网络课程>>>FLASH学习>>>动态播放外部 FLV 文件
动态播放外部 FLV 文件
发表日期:2008/1/9 21:39:00 出处:未知 作者:未知 发布人:373194360 已被访问 2408

动态播放外部 FLV 文件

您可以在运行时加载 FLV 文件,并在 SWF 文件中播放。可以将这些文件加载到视频对象或诸如 FLVPlayback 之类的组件中。下面的示例演示如何在视频对象中播放名为 clouds.flv 的文件。

在 Flash 文档中回放外部 FLV 文件:

  1. 创建一个名为 playFLV.fla 的新 Flash 文档。
  2. 在“库”面板(“窗口”>“库”)中,从“库”弹出菜单中选择“新建视频”。
  3. 在“视频属性”对话框中,命名视频元件并选择“视频”(受 ActionScript 控制)。
  4. 单击“确定”以创建一个视频对象。
  5. 将该视频对象从“库”面板拖到舞台上,以创建视频对象实例。
  6. 使视频对象在舞台上保持选中状态,在“属性”检查器(“窗口”>“属性”>“属性”)中的“实例名称”文本框中键入 my_video
  7. 在时间轴中选择第 1 帧,然后打开“动作”面板(“窗口”>“动作”)。
  8. 在“动作”面板中键入以下代码:

 

this.createTextField("status_txt", 999, 0, 0, 100, 100);
status_txt.autoSize = "left";
status_txt.multiline = true;
// 创建一个 NetConnection 对象
var my_nc:NetConnection = new NetConnection();
// 创建一个本地流连接
my_nc.connect(null);
// 创建一个 NetStream 对象并定义一个 onStatus() 函数
var my_ns:NetStream = new NetStream(my_nc);
my_ns.onStatus = function(infoObject:Object):Void {
    status_txt.text += "status (" + this.time + " seconds)\n";
    status_txt.text += "\t Level: " + infoObject.level + "\n";
    status_txt.text += "\t Code: " + infoObject.code + "\n\n";
};
// 将 NetStream 视频输入信号附加到 Video 对象
my_video.attachVideo(my_ns);
// 设置缓冲时间
my_ns.setBufferTime(5);
// 开始播放 FLV 文件
my_ns.play("http://www.helpexamples.com/flash/video/clouds.flv");
 
 
 

 

  1. 选择“控制”>“测试影片”来测试该文档。

有关预加载 FLV 文件的信息,请参阅第 507 页上的“预加载 FLV 文件”。有关将 FLV 视频动态加载到组件中的信息,请参阅《组件语言参考》。有关 FLV 文件和服务器、FLV 文件以及在 Macintosh 上本地播放 FLV 文件的信息,请参阅

预加载 FLV 文件

若要跟踪 FLV 文件的下载进度,请使用 NetStream.bytesLoadedNetStream.bytesTotal 属性。若要获取 FLV 文件的总字节数和当前下载的字节数,请使用 NetStream.bytesLoadedNetStream.bytesTotal 属性。

下面的示例使用 bytesLoadedbytesTotal 属性显示将 video1.flv 加载到名为 my_video 的视频对象实例中的进度。将动态创建一个名为 loaded_txt 的文本字段,以便显示有关加载进度的信息。

预加载 FLV 文件:

  1. 创建一个名为 preloadFLV.fla 的新 FLA 文件。
  2. 在“库”面板(“窗口”>“库”)中,从“库”弹出菜单中选择“新建视频”。
  3. 在“视频属性”对话框中,命名视频元件并选择“视频”(受 ActionScript 控制)。
  4. 单击“确定”以创建一个视频对象。
  5. 将该视频对象从“库”面板拖到舞台上,以创建视频对象实例。
  6. 使视频对象在舞台上保持选中状态,在“属性”检查器(“窗口”>“属性”>“属性”)中的“实例名称”文本框中键入 my_video
  7. 使视频实例保持选中状态,然后在“属性”检查器的宽度文本框中键入 320,在高度文本框中键入 213
  8. 在时间轴中选择第 1 帧,然后打开“动作”面板(“窗口” > “动作”)。

在“动作”面板中键入以下代码:

 
var connection_nc:NetConnection = new NetConnection();
connection_nc.connect(null);
var stream_ns:NetStream = new NetStream(connection_nc);
my_video.attachVideo(stream_ns);
stream_ns.play("http://www.helpexamples.com/flash/video/lights_short.flv");
this.createTextField("loaded_txt", this.getNextHighestDepth(), 10, 10, 160, 22);
var loaded_interval:Number = setInterval(checkBytesLoaded, 500, stream_ns);
function checkBytesLoaded(my_ns:NetStream) {
    var pctLoaded:Number = Math.round(my_ns.bytesLoaded / my_ns.bytesTotal * 100);
    loaded_txt.text = Math.round(my_ns.bytesLoaded / 1000) + " of " + Math.round(my_ns.bytesTotal / 1000) + " KB loaded (" + pctLoaded + "%)";
    progressBar_mc.bar_mc._xscale = pctLoaded;
    if (pctLoaded >= 100) {
        clearInterval(loaded_interval);
    }
}
 
 

  1. 选择“控制”>“测试影片”,对代码进行测试。

    注意

     

    如果进度条立刻走完,则表明视频被缓存到了硬盘上(可能是早已测试过此示例,也可能在其它过程中早已加载了它)。如果发生这种情况,请将 FLV 文件上载到服务器,然后再加载。

预加载 FLV 文件的另一种途径是使用 NetStream.setBufferTime() 方法。此方法采用单个参数,该参数指示回放开始前 FLV 流缓冲的秒数。有关详细信息,请参阅《ActionScript 2.0 语言参考》中的 setBufferTime(NetStream.setBufferTime 方法)getBytesLoaded(MovieClip.getBytesLoaded 方法)getBytesTotal(MovieClip.getBytesTotal 方法)bytesLoaded(NetStream.bytesLoaded 属性)bytesTotal(NetStream.bytesTotal 属性)setInterval 函数

例子:

 




Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1933521

双击自动滚屏 【打印本页】 【关闭窗口
 相关评论:

没有相关评论

 发表评论:

身份选择:会员 游客(游客不需要输入密码)
用 户 名: 密 码:
评论内容:
(最多评论字数:500)

幻影音画驿站 | 设为首页 | 加入收藏 | 联系我们 | 进入管理 | 关于站长 | 本站搜索

联系电话:1592130835 联系人:幻影