显示对象深度

时间:2012-03-21 00:01:30

标签: actionscript-3 flash depth displayobject

我创建了一个具有舞台的游戏客户端 它将游戏实例作为孩子加载 游戏实例创建一个新的movieclip tileset并将其添加到游戏实例阶段。 tileset有自己的舞台,它作为儿童拼贴(游戏地图),物品,菜单和英雄加载。 当我点击一个项目时,它会在tileset中添加一个movieclip作为子项,并在该movieclip中加载一个外部swf,在其中创建一个新的子项。

问题在于,当我通过Flash使用空气调试器测试它们时,所有的孩子都工作得很完美,但是当我发布并安装它时,它并没有显示加载的外部swf的动态部分。

我想知道是否有多少孩子在舞台上或我达到了深度限制。

1 个答案:

答案 0 :(得分:0)

你对DisplayObjects的限制并没有那么快,实际上有些可笑的是,与3深度相比,我参与创建的一些显示树的深度:)。

问题是在此上下文中加载外部swf,您必须记住代码实际上是交叉编译以在特定平台上运行。这意味着(通过我最好的猜测)是在转换过程中可能已经考虑了字节顺序,字节顺序,字大小以及其他CPU和/或平台特定属性(更不用说向Dalvik进行向下/交叉编译, android JVM,字节码或A4 / A5机器码,不知道那里调用的实际指令集是什么)。我决定深入研究这个,所以我将我的项目导出为APK,用7-zip打开APK,找到swf(并看到围绕它构建的所有其他结构),提取所说的swf并将其放在旁边在bin-debug文件夹中,用于在AIR调试器中进行测试。打开了带有7-zip的那些和来自bin调试的swf中的大量DoABC文件,并且在同一程序的apk版本中只有一个。进一步检查需要一个十六进制编辑器,因为很多文件只有4个字节,所以用任何类型的普通文本编辑器读取它们都没有用。如果您在调试模式下在设备上运行它,您可能会遇到某种错误。

无论如何技术支持你最好的选择是在运行时以“普通”格式加载资源,即mp3,png无论它是什么。您也可以将它们压缩以节省空间并使用此处的zip库:http://nochump.com/blog/archives/15

你应该能够通过外部加载的swf来实现我能想到的一切,除了实际的swf本身已加载。

另外,无论如何深入了解swf无意义的所有内容,请查看SDK中的swfdump.jar实用程序(google it,请注意我的4MB swf成为100 MB XML文件一切都拼写出来......有点,我使用“第一个对象XML编辑器”来仔细阅读非感知XML这样)我用那个jar来编写一个maven插件,找出我们源代码中定义的类不会最终由此产生的swf,以帮助清理孤立的代码。