2011-02-12 53 views
0

美好的一天。我有一个关于闪存的问题......是否有可能加载一个剪辑的第一个2-3帧,而这些正在播放加载其余的?actionscript flash - 在播放时加载帧

另外,如果答案在第一个问题ID是肯定的,它可以改变加载顺序考虑在第一部分发生了什么?

如果是的话......怎么样?

谢谢你的帮助。

回答

0

答案#1:是的。

默认情况下为Flash动画流,这意味着它们在加载帧1后立即开始播放。
但是,您必须确保库中没有任何符号嵌入第1帧 - 否则加载第一帧将花费更长的时间。另外,使用运行时共享库​​也会产生类似的效果。

答案#2:如果你的意思是改变加载时循环的同一个SWF的加载顺序,答案是否定的。您当然可以更改您加载到第一部电影中的其他SWF文件的加载顺序。

+0

让我举个例子......我创建一个文本字段并将其保留在每一帧上。我在每一帧中都放了一些随机电影(flv)。剪辑开始。当第一部电影正在播放时,我想加载第二部电影,但如果用户在文本字段中键入3,我想在此时加载第三部电影,而第三部电影将加载第二部电影,第四部电影等。 – zozo 2011-02-12 09:43:07

1

简而言之,加载时,flash播放器将从第1帧开始,并将继续坐在那里,直到第1帧中的所有数据都已载入。只有这样它才能进入下一帧。通过选中“文件 - >发布者设置”下的“Flash”选项卡中的“生成构建报告”复选框,您可以获取详细的报告数据导出到每个帧的报告。

要获取简单的加载显示要添加一个在第1帧命名为“loader_txt”文本字段,并添加以下代码在行动:

stop(); 

    this.addEventListener(Event.ENTER_FRAME, loading); 

    function loading(e:Event):void{ 

     var total:Number = this.stage.loaderInfo.bytesTotal; 
     var loaded:Number = this.stage.loaderInfo.bytesLoaded; 

     loader_txt.text = Math.floor((loaded/total)*100)+ "%"; 

    if (total == loaded){ 
     play(); 
     this.removeEventListener(Event.ENTER_FRAME, loading); 
    } 

    } 

为了确保您的资产和ActionScript代码出口超过1帧这样上面的代码可以立即踢时,Flash影片开始加载,进入“文件 - >发布设置”,选择“Flash”选项卡,然后点击“脚本”右边的“设置...”按钮。应该显示一个对话框。在该对话框的“输出框架中的类别”下,输入2.

对于库中的资产,您可能需要执行类似的操作。右键单击库资产并选择属性,您将看到取消选中“在第1帧中导出”的选项。如果取消选中它(这意味着Flash资源可以在该资源加载之前开始播放),则必须确保在时间轴上的第1帧以外的某个位置有对该符号的引用,否则Flash将从编译中忽略它。

祝你好运!