3

我必须(快点!)在我继承的网站上为现有的 Flash 标头添加简介。我无法访问源 .fla,因此我通过将介绍放入包装器 swf 并加载当前标头并将其添加到 .fla 上的显示列表来解决问题Event.INIT。到目前为止,一切都很好。(顺便说一下,swfs 是为 flash player 9 构建的并使用 AS3。)

我遇到的问题是,虽然介绍播放良好并加载/显示标头 swf 的开头,这是一个加载动画,但标头本身从未真正播放。本质上,我的问题是:当它是另一个 swf 的子代而不是嵌入式 swf 的顶层时,什么会导致基于 actionscript 3 的 swf 表现不同?

潜在的重要细节:嵌入正在使用 swfobject 处理,并且没有传入任何 flashvar。有两个参数,它们是base: "/flash/"wmode: "opaque"。所有 swfs 和 flash 数据都保存在/flash/. flash 元素(减去我构建的介绍)是使用我不熟悉 的Inky flash 框架构建的。

更新:我重新考虑了解决问题的方法,并通过使用 ExternalInterface 使其工作;我让 intro swf 在完成播放时调用一个 js 函数,它会换掉 intro swf 并将其替换为当前的标头(方法在此处概述)。不过,我仍然想知道为什么我会目睹我之前看到的行为,因此欢迎任何想法和建议。

4

1 回答 1

1

您的 Flash 文件可能存在一些潜在问题。

如果您的 swf 是在 AS2 中编译的,那么它可能引用了 _root,当它被加载到另一个 swf 时会被搞砸。在 AS2 中,您可以使用 _lockroot 绕过它。在 AS3 中,这不再是问题,因为继承了 _lockroot。

如果您的电影是基于时间线的电影,您可以尝试调用 play() 函数。

如果您的介绍加载外部资产,您将需要确保为所有外部资产正确设置路径。尝试将容器的 swf 文件和 intro 放在同一目录中。或者使用 Safari 活动窗口进行故障排除,查看是否有任何“404 未找到”。

另一件事是不一致的闪存版本。如果您使用 Flash 版本 10 加载 Flash 版本 9,您可能会遇到问题。

希望这些指点有所帮助。

于 2010-02-04T01:19:28.577 回答