加载Flash文件有很多部分,更常见的是HTML页面。
我将从HTML页面的顶部开始,我敦促其他人纠正我可能犯的任何错误。
加载页面
当收到HTML页面时,浏览器会将其解析为文档对象模型(DOM),以便它具有每个元素的编程表示。浏览器遍历DOM树中的每个节点并根据需要填充它。
对于大多数节点,这只是创建一个新的DOM元素,如div,p或a;但有些内容需要加载或更换。
表单元素(input,select,button,textarea)将替换为这些表单字段的特定于浏览器的表示形式。
用作样式表的
link元素是异步加载的。随着外部资源的加载,DOM继续解析页面。
另一方面,
script元素是同步加载的。在脚本完成加载和执行之前,DOM无法继续解析树,如果加载失败或执行有错误,则无法解析。
img个元素是异步加载的,但允许onload回调确定它们何时完成加载。在所有onload元素完成加载(或失败)之前,DOM无法触发窗口的img事件。
了解基本元素有助于理解更多涉及的元素,例如object,embed和iframe,这些元素也会替换为内容。
Flash通常使用object,embed和iframe嵌入网页。
据我所知,object和embed元素的反应相似,所以我会从此处快捷方式并说出object。
在iframe和object元素中加载闪存之间存在明显差异。
object元素与script元素非常相似,其中必须成功加载并执行内容才能继续解析DOM。
iframe元素非常类似于img元素,其中内容是异步加载的,但回调可用于确定加载何时完成(尽管我不是确定回调是否可用于跨域请求)。
加载Flash
上一节讨论只是内容加载的HTML方面。但是,闪光灯内有许多细微差别会严重影响闪光电影的加载时间。
正如我之前所说,在继续解析DOM之前,script元素必须完全加载和。在Flash文件中也发现了类似的效果(即使通过iframe包含在内)。必须先加载swf中嵌入的所有资源,然后才能swf释放对页面加载进度的保留。
如果您已将视频直接嵌入到时间轴中,则必须先加载整个视频,然后才能将闪存视为已完成并初始执行。
相反,如果您选择使用异步回调来开始加载恰好是视频的外部资源,并使用异步加载器加载视频,则不必等待视频完成在加载页面的其余部分之前加载;在闪存中,您仍然需要等待视频完成加载才能开始播放视频。
或者,闪存中有许多方法可以流式传输视频,或逐步从服务器加载视频,这样可以在不完成加载的情况下播放视频。 我对flash特定方面的经验很少,所以我不会解释如何完成。
使用像swfobject这样的库可以异步加载所需的swf,以便闪存加载是非阻塞的。
TL; DR:
可能会逐步加载Flash文件,具体取决于您构建HTML的方式以及swf中正在运行的代码。