1

使用:Adobe Flash CS6 导出:Flash player 11.2 操作系统:OSX/Windows

嘿伙计们。我已经有一段时间了这个巨大的问题。我正在开发一款教育游戏。这个主 SWF 加载了其他几个 SWF。由于它是双语游戏,每个活动都有两个版本,西班牙语和英语。

现在主要关注点。假设我有一个名为“hangman”的活动。我有西班牙语版的“hangman.swf”和英文版的“hangmanE.swf”。除了使用的实际资产外,它们几乎相同。两者都由主 SWF 加载。所以在他们的库中,我有一个声音,它有一个名为“AudioInstruction”的类,它是活动的指令。实际文件不同,因为我需要为每种语言提供一个文件,但给出的类是相同的。

档案图:

  • 大师.swf
    • 刽子手.swf
    • 刽子手E.swf

当我打开西班牙语版本然后切换到英文版本时,问题就来了,反之亦然。由于第二个打开的是英文版,它实际上忽略了它的内部“AudioInstruction”文件,只播放西班牙文版。好像拥有具有相同类名的资产会使第二个 SWF 忽略它自己的资产。有没有人遇到过这个问题?

任何类型的资产电影剪辑、声音或图形都可能发生这种情况。我认为这是因为帧内编码,但我使它们基于类,但它们仍然存在这个问题。这不是任何操作系统独有的,它发生在 Windows 和 Mac OSX 中。

4

2 回答 2

1

将加载的 SWF 放入另一个应用程序域(参见ApplicationDomain类)。

通过创建系统域的子域来对子 SWF 文件进行分区。在图中,应用程序域 2 创建为系统域的子域。[...] 这种技术的一种用途是让旧应用程序动态加载同一应用程序的较新版本而不会发生冲突。没有冲突,因为尽管使用了相同的类名,但它们被划分为不同的应用程序域。

参考:使用应用程序域

于 2013-08-06T13:58:38.663 回答
0

在加载第二个 swf 之前,尝试调用加载第一个 swfyourLoaderName.unloadAndStop()的那个。Loader

有关更多信息,请参阅文档

听起来 Flash 仍然挂在第一个 swfs 资产上,当第二个 swf 被加载时,它发现它已经在内存中拥有许多相同的资产。

于 2013-08-06T13:53:12.497 回答