Flash AS3加载视频而另一个正在播放

时间:2012-10-15 09:16:35

标签: actionscript-3 flash

我的Flash网站需要播放让我们一个接一个地说10个视频,以减少我需要在视频1播放时预先加载视频2和视频3的等待时间等等...

我需要遵循这种结构,因为在视频结束时,用户将有机会选择下一个(2或3)。

所有代码都在我电影的第一帧,我仍然需要学习课程,包等。

第一个视频通过链接视频(myVideo)播放,我使用以下代码放置在舞台上:

var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
ns.addEventListener(NetStatusEvent.NET_STATUS, statusHandler);
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
ns.play("video1.f4v");
var myVideo:Video = new Video();
myVideo.attachNetStream(ns);
addChild(myVideo);

我需要了解预先加载其他两个视频的最佳方式。 1正在播放。

我应该再创建2个链接视频,将它们放在舞台上并在那里加载视频,以便在需要时立即可用吗?

非常感谢你的帮助!

---编辑:在我的帖子中添加了更多细节---

我正在做一些测试来理解这个程序,我尝试了以下内容:

var ns2:NetStream = new NetStream(nc);
var ns3:NetStream = new NetStream(nc);
ns2.play("video/video2.f4v");
ns2.pause();
ns2.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
ns3.play("video/video3.f4v");
ns3.pause();
ns3.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);

它的工作原理,但以这种方式加载2部电影将导致100%的CPU使用率和视频播放的帧速率不佳...也许我必须加载视频2,检查加载完成然后开始加载视频3 ..这是正确的方法吗?

再次感谢

2 个答案:

答案 0 :(得分:1)

我相信我找到了方法,这是完整的脚本:

var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
ns.addEventListener(NetStatusEvent.NET_STATUS, statusHandler);
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
ns.play("video1.f4v");
var myVideo:Video = new Video();
myVideo.attachNetStream(ns);
addChild(myVideo);

var ns2:NetStream = new NetStream(nc);
var ns3:NetStream = new NetStream(nc);

function statusHandler(event:NetStatusEvent):void
{
    switch (event.info.code)
    {
        case "NetStream.Play.Start" :

        ns2.play("video/video2.f4v");
        ns2.pause();
        ns2.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);

        ns3.play("video/video3.f4v");
        ns3.pause();
        ns3.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);

        break;

        case "NetStream.Play.Stop" :
        trace("ns video stop");
        break;
    }
}

当我打电话给ns.play(“video2.f4v”);视频已经在浏览器缓存中,因此立即开始播放,Cpu使用情况也很好。

如果有更专业的方式,我想了解更多。

追踪(“谢谢,很快见到你”);

答案 1 :(得分:0)

实现这一目标的最简单方法是使用Greensock的LoaderMax。您可以设置要加载的视频列表,然后根据用户的操作确定其中一些视频的优先级。

LoaderMax有一些很棒的功能,很难从头开始构建,它还修复了一些奇怪的Flashplayer行为。

有一点学习曲线,但不是太陡。