问题描述
|
我正在尝试制作一个小型多媒体播放器,其中至少有9个我要放置和播放的小型视频剪辑,这些视频剪辑均由AS 3.0控制。
它甚至可能超过9个剪辑,但它们会在9个地方随机显示。电影也可以切换视口。
我会将它们全部预加载到缓冲区中,我想同时随机播放它们。
这意味着可能会有9个大小相等的区域显示小电影剪辑,包括声音和随机时间。
像这样:
[1] [2] [3]
[4] [5] [6]
[7] [8] [9]
因此,它的1个Flash画布/播放器同时显示了所有内容。
这是可能的,还是会使Flash崩溃以播放9部电影及其声音?电影的长度可能不同,必须重设并播放多次,但是我无法将结果预渲染为根据用户输入随机生成的结果。
在这里,任何精通AS 3.0的专家都可以为我提出这个想法的正确方向?
编辑
就像...从哪里开始的示例代码?我一直在想我可以将所有部分放到一个\“ sprite movie \”中,然后将每个\“ window \”的帧放到XYZ帧中-但不确定如何或是否会起作用……也不是最好的方法。
解决方法
我认为这是不可能的。您创建9个视频对象,并且需要9个NetStreams。您设置了一个计时器来分别开始每个视频。
因此,最简单的方法是在一个数组中有9个flv名称,在一个数组中有9次。然后创建一个循环,在其中创建9个视频对象,将它们排列成矩阵,然后使用超时在特定时间启动每个对象。
我能想到的最简单最短的代码如下:
//we use the same flv now
var flvs:Array = [\"filename.flv\",\"filename.flv\",\"filename.flv\"];
//setting the times in milliseconds
var times:Array = [0,500,1000,1500,2000,2500,3000,3500,4000];
//creating a NetConnection
var nc:NetConnection = new NetConnection();
//connect null,the flv is in the same folder and a simple file loading
nc.connect(null);
//the loop
for(var i:int = 0; i < times.length; i++)
{
var ns:NetStream = new NetStream(nc);
var video:Video = new Video(100,100);
addChild(video);
//i%3 and int(i/3) arranges them in a 3x3 matrix
video.x = (i%3) * video.width;
video.y = int(i/3) * video.height;
video.attachNetStream(ns);
//the tricky timeout to call the funcion playFlv,in times[i] time,for the specific nc NetStream to play the given flvs[i] flv
flash.utils.setTimeout(playFlv,times[i],ns,flvs[i]);
}
function playFlv(ns:NetStream,flv:String):void
{
ns.play(flv);
}
,是的,这绝对是可能的。当然,您将需要尽可能优化视频。 Pine Point网站对此有先例,(您必须导航到“货架期”部分,然后点击“下一步”几次才能看到它)一次正在播放12个视频,所有长度不同。就构建它而言,它与播放一个视频没有什么不同,只需重复执行步骤X次即可。
希望对您有所帮助,