我在ActionScript 3中有一个网站,当你按下按钮时会发生很多FLV动画。现在这就是我设置它的方式。
在AS3中我加载FLV(这是我从After Effects以FLV形式导出的动画) 与净流。我有一个定时器设置与动画(FLV)播放相同的时间长度,当定时器停止时,它调用一个关闭流,打开一个新的播放另一个视频的功能。我注意到使用计时器的唯一问题是,如果连接很慢并且(动画)停止一秒钟,计时器会继续运行,并且过早地调用下一个flv。
有没有人知道在flv播放结束时加载flv或swf的方法?以便下一个FLV将始终在前一个FLV的运行时间结束时播放,而不是使用定时器?
我在考虑完成但我不知道如何实现它??
答案 0 :(得分:0)
使用OSMF框架很容易实现顺序播放,你应该检查一下。谷歌“osmf教程”,你应该在网上找到一些教程。
该框架是相当新的,但看起来它可能成为Flash中媒体传输的事实上的解决方案,因为它不仅限于视频,还包括音频和音频。图片。
作为开发人员,您不必费心使用NetStream& NetConnection类。开发视频解决方案,以及音频和视频图像解决方案应该简化并且更易于处理。唯一的限制是它需要Flash 10
答案 1 :(得分:0)
这是一些用于检查FLV何时以NetStream结尾的代码。我只是提供片段,因为我假设你已经启动并运行了FLV。
//create a netstream and pass in your connection
var netStream:NetStream = new NetStream(conn);
//add callback function for PlayStatus -event
var client : Object = {};
client.onPlayStatus = onPlayStatus;
netStream.client = client;
//attach your NetStream to the connection as usual
//---
//function that gets called onPlayStatus
function onPlayStatus(info : Object) : void {
trace("onPlayStatus:" +info.code + " " + info.duration);
if (info.code == "NetStream.Play.Complete") {
//play the next FLV and so on
}
}
编辑:使用您的示例代码,它将看起来像这样。
var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
var listener:Object = new Object();
listener.onMetaData = function(md:Object):void{};
listener.onPlayStatus = function(info : Object) : void {
trace("onPlayStatus:" +info.code + " " + info.duration);
if (info.code == "NetStream.Play.Complete") {
//play the next FLV and so on
}
};
ns.client = listener;
vid1.attachNetStream(ns);
const moviename1:String = "moviename2.flv";
const moviename1:String = "moviename3.flv";
var movietoplay:String = "moviename.flv";
ns.play(movietoplay);