0

我正在处理这个 Flash 项目,并且我构建了一个 swf,其中所有资产都导出到第 5 帧中,并且第一帧包含预加载器。预加载器完成后,它会跳转到第 10 帧,从那里开始实际站点。这很好用。

但是,在我迄今为止测试过的每个浏览器(FF、IE、Chrome 和 Safari)中,当我在 url 上放置 # 时,行为似乎是浏览器首先下载整个 swf,然后开始播放它。结果是 swf 需要一段时间才能加载(空白屏幕),预加载器以 100% 的速度启动,然后 swf 继续到该站点。

如果有人能确认这种行为以及任何有助于阐明这个问题的意见,我将不胜感激。

更新:

感谢rhtx指出了这种烦人的 Flash Player 行为。在某种程度上我可以理解为什么会这样,但它只有在你制作线性电影时才有效,而我没有。目前这意味着我需要为第一帧上的每个深层链接位置创建一个标签,如果您的路径是内容驱动的,这当然是不可能的。

有没有办法克服第二个问题?

4

4 回答 4

2

当 URL 中有 # 时,我在编写和读取本地 SharedObjects 时遇到了一个非常疯狂的问题。这很痛苦,我无法完全确定它。与您正在处理的不同,但我可以确认,当 URL 中有“#”时,FP 在某些情况下可能会有所不同。

认为在您的情况下可能发生的情况是 Flash Player 正在寻找一个锚点,因为 '#' 符号。我的猜测是,它一直在寻找,直到整个 SWF 加载完毕,并且它发现 SWF 中的任何地方都没有可以与之匹配的锚点。

你可以尝试这样的事情:

在主时间轴上的 FLA 中添加一个新图层。在第一帧上,创建一个锚点(添加关键帧,命名帧并在命名时选择“锚点”选项)。尝试再次加载您的页面,但将锚点的名称放在井号之后。如果它按需要加载,那么我的猜测可能会有所不同。

希望有帮助。

于 2009-07-15T15:17:07.530 回答
1

您可以制作一个“容器” swf,其唯一工作就是加载真正的 swf。这样,页面上的 swf 在运行之前是否完全加载都没有关系,因为它的大小只有几 kb。

于 2009-07-14T05:36:02.440 回答
1

我的猜测是这个错误给你带来了问题。这家伙一直在报告这个错误的性质一段时间。

虽然听起来你没有使用 flex,但如果这个 bug 也影响纯 as3 flash,我不会感到惊讶。

该错误最近已关闭。解决方案:制作一个小型 swf 预加载器来加载您的主 swf(如 asperous.us)建议。

也看到这个所以 q & a

于 2009-07-20T01:57:20.750 回答
1

我已经知道这个错误一段时间了,并使用容器方法来规避它。但我讨厌容器方法,所以我偶尔会在网上搜索解决方案。

rhtx 来救援..

没有它应该的那么干净,但我很高兴它的工作方式..

我现在实现它的方式是我在第 1 帧上有一个名为“正在加载”的帧标签类型锚(第 2 帧是我的应用程序所在的位置)。

然后我使用一段 javascript 来加载我的 flash 站点,它基本上是这样做的:

//pseudo javascript
var path = "";
function buildFlash() {
   path = location.hash.length > 1 ? location.hash.substr(1) : "";
   location.hash = "loading";
   $(document).ready(onDOMReady); //could probably directly load the swf now
}

function onDOMReady() {
   swfobject.embedSWF(... with path flashvar ...);
}

这对我有用的原因是我从 flash 中调用了一个函数ExternalInterface("setPath", path)来设置散列,而散列又将路径传递给 googleanalytics。

访问 url http://www.site.com/#about/的人 会在站点加载时看到 url /#loading,加载完成后,flash 应用程序会确定用户应该去哪里并相应地更改 url .

于 2010-02-04T16:24:56.397 回答