【问题标题】:Converting Actionscript syntax to Objective C将 Actionscript 语法转换为 Objective C
【发布时间】:2011-04-21 17:11:46
【问题描述】:

我有一个我在 Actionscript 3 中编写的游戏,我希望移植到 iOS。游戏有大约 9k LOC,分布在 150 个类中,大部分类用于数据模型、状态处理和关卡生成,所有这些都应该易于移植。

但是,在所有这些文件中手动重新调整语法的想法并不太吸引人。有没有工具可以帮助我加快这个过程?

我不是在这里寻找神奇的工具,也不是在寻找交叉编译器,我只是想要一些帮助来转换我的源文件。

【问题讨论】:

  • 我认为 CS5 导出到 iPhone 工具不适合?
  • 我已经尝试过了,但是由于它一个包含所有功能的交叉编译器,所以它的性能并不完全明智。
  • 根据我的经验,iOS 4 并不是我所说的 snappy,除了最新的硬件。就个人而言,我不得不将我的 iPod touch 2G 降级到以前的版本,而那只是为了使用库存应用程序。您是否在新设备上测试过 iPhone Packager 项目?我知道这不是一个真正理想的解决方案,因为很多人都有旧硬件,但我对 iPhone Packager 的性能感到好奇。
  • 我有一个 ipad 只是为了测试它,但我所有的测试都显示非常不稳定和低帧率,一个简单的位图矩形在屏幕上平移(没有缩放或旋转)提供 15-45 fps。我几乎怀疑为 ipad 生成的代码有问题。
  • 好的,有趣,我还没有尝试 CS5 导出功能。希望 Adob​​e 会改进它。如果您要手动移植您的代码,那么也许可以看看 cocos2d 2D 游戏框架。 Bit101 的 Keith Peters 有一些从 AS3 开发人员角度来看的教程。

标签: objective-c actionscript-3 syntax porting


【解决方案1】:

我不知道有什么工具,但如果确实有很多(简单)代码要转换,我会尝试通过这种方式解决您的问题。我敢肯定,我的建议对于特定于 Flash 的部分代码(所有 DisplayObject 的东西?)并没有那么有用,而且对你的许多逻辑也没有那么有用。但是建造起来会很有趣! :-)

部分自动转换应该是可能的,特别是如果对象只是“数据容器”,但要注意将过多的 as3-idiom 带入 Objective-c,它可能并不总是很合身。

除非您想为 as3 创建自己的(半)解析器,否则您需要某种解析器,显然 FlexPMD 有一个(从未使用过),而且可能还有其他的。

在使用解析器后,您必须找到某种方法向系统建议可以自动转换哪些部分。对于一般情况,您可以尝试向解析器/生成器脚本添加规则。对于更具体的情况,我会在实际的类/属性/方法上使用自定义元数据,假设真正的 as3 解析器会正确解析这些。

现在您的部分工作将从手动转换文件转移到手动注释文件,但这对您来说可能没问题。

让解析器解析您的类并根据您的元数据定义操作,这些操作将确定要生成哪种类型的objective-c 类。如果你得到这个工作,它至少可以让你得到所有的类,它们的简单属性和方法签名(转换方法的主体可能有点过分,但你可以将它作为评论包含在内,这样你就有了手工翻译时的一个很好的参考)。

PS:如果你把它变成一个单向过程,请确保以后不需要重新生成它——如果你发现你一直在修改生成的代码并且需要重新生成,那就太糟糕了- 生成所有这些类——这意味着你必须重做所有的辛勤工作!

【讨论】:

    【解决方案2】:

    我已经开始整合一个工具来消除这个过程的琐碎方面。

    我试图弄清楚是否有足够的兴趣让它变得足够干净和稳定以供其他人使用。反正我也可以。

    http://meanwhileatthelab.blogspot.com.au/2012/08/automating-process-of-converting-as3-to.html

    到目前为止,在将我的一个相当大的游戏从 AS3 移植到 objc 时,这为我节省了很多时间。

    【讨论】:

      【解决方案3】:

      查看 Sparrow 框架。据称它的设计考虑了 Actionscript 开发人员,重新创建了模拟显示列表之类的类。如果您不想使用 CS5 打包程序,那么无论您做什么,都必须进行一些“重新调整”。

      http://www.sparrow-framework.org/

      【讨论】:

        【解决方案4】:

        即使存在某些解决方案,请注意架构逻辑是不同的,还有更多其他细节。 无论如何,即使可能,你也会有一个奇怪的混合体。 我从 WWDC2012 回来,信息是(一如既往..)性能和出色的用户体验。

        所以你应该使用不同的编程模型重写。

        【讨论】:

          猜你喜欢
          • 2016-01-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-17
          • 1970-01-01
          • 2014-05-14
          相关资源
          最近更新 更多