Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 AS3和Flash Player:第一个加载的SWF资产覆盖第二个&x27;s_Actionscript 3_Flash_Flash Cs6 - Fatal编程技术网

Actionscript 3 AS3和Flash Player:第一个加载的SWF资产覆盖第二个&x27;s

Actionscript 3 AS3和Flash Player:第一个加载的SWF资产覆盖第二个&x27;s,actionscript-3,flash,flash-cs6,Actionscript 3,Flash,Flash Cs6,使用:AdobeFlashCS6 导出:Flash player 11.2 操作系统:OSX/Windows 嘿,伙计们。我有这个大问题已经有一段时间了。我正在做一个教育游戏。此主SWF加载其他几个SWF。由于这是一个双语游戏,每个活动有两个版本,西班牙语和英语 现在谈谈主要问题。假设我有一个叫做“刽子手”的活动。我有“hangman.swf”是西班牙语版本,还有“hangmanE.swf”是英语版本。除了实际使用的资产外,它们几乎是一样的。两者都由主SWF加载。所以在他们的图书馆里,我有一个声

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

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

现在谈谈主要问题。假设我有一个叫做“刽子手”的活动。我有“hangman.swf”是西班牙语版本,还有“hangmanE.swf”是英语版本。除了实际使用的资产外,它们几乎是一样的。两者都由主SWF加载。所以在他们的图书馆里,我有一个声音,有一个叫做“音频指令”的类,这是活动的指令。实际的文件是不同的,因为每种语言都需要一个,但给定的类是相同的

文件映射:

  • Master.swf
    • 刽子手
    • 悬鬃
当我打开西班牙语版本,然后切换到英语版本或反之亦然时,问题就出现了。由于英文版是第二次打开的,它实际上忽略了它的内部“音频指令”文件,只播放西班牙语版好像拥有具有相同类名的资产会使第二个SWF忽略其自身的资产。有人遇到过这个问题吗?


它可以发生在任何类型的资产电影中,包括动画、声音或图形。我认为这是因为帧内编码,但我使它们基于类,它们仍然有这个问题。这不是任何操作系统所独有的,它在Windows和Mac OSX中都会发生。

在加载第二个swf之前,尝试在加载第一个swf的
加载程序上调用
yourLoaderName.unloadAndStop()


这听起来好像Flash仍然挂在第一个swf资产上,当第二个swf加载时,它会看到它的内存中已经有许多相同的资产。

在加载第二个swf之前,尝试调用加载第一个swf的
加载程序上的
yourLoaderName.unloadAndStop()


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

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

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


参考:

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

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


参考资料:

谢谢您的回答。这正是让我震惊的地方,我在SWF上使用unloadAndStop来加载“master”(即“world”SWF)。但在实际的大师中,我使用的是UILoader。遗憾的是,大约有10个“主”主权财富基金,由于预算原因,项目经理没有批准将其全部转换为加载器。我正在UILoader上使用unload()。谢谢您的回答。这正是让我震惊的地方,我在SWF上使用unloadAndStop来加载“master”(即“world”SWF)。但在实际的大师中,我使用的是UILoader。遗憾的是,大约有10个“主”主权财富基金,由于预算原因,项目经理没有批准将其全部转换为加载器。我在UILoader上使用unload()。谢谢,我曾经处理过应用程序域,比如。。。几年前。我来看看。我只是想说这很有魅力。当我加载每个“主”SWF时,我会创建AppDomain的一个新实例、LoaderContext和Loader。卸载后,我将其中三个设置为空。它需要更多的测试,但我认为这解决了我的问题。再次感谢。谢谢你,我曾经在应用程序领域工作过,比如。。。几年前。我来看看。我只是想说这很有魅力。当我加载每个“主”SWF时,我会创建AppDomain的一个新实例、LoaderContext和Loader。卸载后,我将其中三个设置为空。它需要更多的测试,但我认为这解决了我的问题。再次感谢。