我目前正在尝试使用Adobe Air在Android和iOS上运行Flash游戏。
虽然Air很好地在Android上运行应用程序,但我在iOS上遇到了麻烦。我实际上能够生成一个.ipa包并将其安装到iPhone(通过iTunes)。但是,当我从iPhone启动应用程序时,没有任何反应(黑屏)。
然后我生成了一个调试.ipa,它连接到我的计算机上运行的FDB调试器,调试器在应用程序启动时显示给定的错误:
#error 1107 the abc data is corrupt attempt to read out of bounds
搜索互联网并没有多大帮助。问题是众所周知的(https://bugs.adobe.com/jira/browse/SDK-14054),但这对我的情况没有帮助。有人有同样的错误并通过从他的flash应用程序(http://sierakowski.eu/list-of-tips/102-building-ios-app-with-adobe-air-things-learnt-when-developing-colorbyshape-app.html)中删除一些3D补间动画来修复它,但我没有使用补间。
有关如何解决此问题的任何想法?或者建议将另一种方式移植到iOS游戏?
注意:我试过iPhone 3G和4S,结果是一样的。该游戏通过Haxe编码,生成.swf文件。这个主swf文件使用其他swf和xml文件,这些文件存在于Air生成的.ipa中。
你见过NME吗?
如果您已经在使用Haxe,则可以使用NME轻松发布iOS版。
就个人而言,我看到使用NME over AIR的性能有了很大改进。例如,在Iain Lobb的BunnyMark基准测试中,iPhone 4使用AIR获得了16 FPS渲染500个带旋转和alpha的兔子。 NME能够以30 FPS的速度渲染4750个兔子的相同演示......增加了9倍。
它不是魔术,但它很整洁,因为它直接编译为原生C ++,使用OpenGL ES进行渲染。它也适用于Windows,Mac,Linux,Android,webOS,Flash(当然)和HTML5。
您的应用程序中是否有任何特定于Flash的内容?
最大的问题是NME本身不支持SWF内容,但有一个SWF库非常接近,并且在C ++中运行。它在Windows中运行良好,但我需要测试并确保它在iOS上运行。