使用:Adobe Flash CS6 导出:Flash播放器11.2 操作系统:OSX / Windows
Heya伙计们。我一直在讨论这个巨大的问题。我正在做一个教育游戏。这个主SWF加载了其他几个SWF。由于这是一个双语游戏,每个活动有两个版本,西班牙语和英语版本。
现在主要关注。假设我有这个名为'hangman'的活动。我有'hangman.swf'这是西班牙语版本和'hangmanE.swf'这是英语版本。除了实际使用的资产外,它们几乎相同。两者都由主SWF加载。所以在他们的库中我有一个声音,它有一个名为'AudioInstruction'的类,这是活动的指令。实际文件是不同的,因为我需要每种语言一个,但给出的类是相同的。
文件地图:
问题出现在我打开西班牙语版本然后我切换到英语版本或反之亦然。由于英语第二次被打开,它实际上忽略了它的内部'AudioInstruction'文件并且只播放西班牙文件。 好像拥有相同类名的资产会使第二个SWF忽略其自己的资产。有人遇到过这个问题吗?
任何类型的资产MovieClip,Sound或Graphic都可能发生这种情况。我认为这是因为帧内编码,但我让他们基于类,他们仍然有这个问题。这不是任何操作系统所独有的,它发生在Windows和Mac OSX中。
答案 0 :(得分:1)
将加载的SWF放入另一个应用程序域(请参阅ApplicationDomain
类)。
通过创建系统域的子级来对子SWF文件进行分区。 在图中,应用程序域2被创建为子域 系统域。 [...]这种技术的一个用途是拥有旧的 应用程序动态加载相同的较新版本 应用没有冲突。没有冲突,因为虽然 使用相同的类名,它们被分成不同的类 应用领域。
答案 1 :(得分:0)
在加载第二个swf之前,尝试在加载了第一个swf的yourLoaderName.unloadAndStop()
上调用Loader
。
听起来Flash仍然挂在第一个swfs资产上,当第二个swf加载时,它发现它已经在内存中拥有许多相同的资产。