我们的应用程序是用 ActionScript2 编写的,有大约 50.000 多行代码。我们想将它移植到 ActionScript3 并试图找出我们的选择。我们必须手动完成还是可以使用转换器,我们会遇到什么问题?
4 回答
不久前我问了一个类似的问题,您可能会发现它很有用:
将预先存在的项目从 Flash 7/AS2 迁移到 Flex/AS3 的最佳方法是什么?
一些小任务可能是自动化的(主要是修复包声明),但除此之外我怀疑它是否可以自动化。
从 AS2 转换到 AS3 时,我总是遇到一些糟糕的事情,主要是因为整个过程没有好的自动化脚本,坦率地说,这很无聊。从长远来看,在仍然处于活动状态并自行更新的项目上更新旧的 AS2 代码是一个好主意,AS3 只是一种更好的语言,而 AVM2 直接比 AVM1 快。
您可以使用脚本删除许多属性中的下划线,添加包信息,执行一些基本导入,但我发现对我来说最好的方法可能是转储您的主类或管理器类进入 FLA 中的文档类行,注释除构造函数之外的所有内容,然后开始转换和取消注释。它可能看起来很慢,但我觉得尝试一次找出 40 个不同的编译器错误可能最终会变慢。
祝你好运,这是必要的工作,但不是有趣的工作。
我认为您永远无法使用自动转换器来完成此任务。转换器可能会为您节省一些步骤或指出必须进行更改的地方,但您必须手动检查代码。
例如,在 AS2 中引用 _level0.variableName 可以指向 _root 级别的影片剪辑、从 HTML 容器发送的 FlashVar 或由代码本身创建的对象。没有真正的知道的方法。(您不能在代码中查找 varname,因为它也可以在外部计算或读取。
您需要有充分的理由进行此类转换。如果 AS2 由于某种原因不再适用,也许您应该尝试解决问题而不是仅仅因为它具有您需要的一个不错的小功能而转换为 AS3。
一些在线站点可用于将 AS2 转换为 AS3 代码。但根据我过去的经验,这并不好,而且是 100% 的结果。AS3 中的许多东西都发生了变化。所以有些部分你可以自动化,而你们中的大多数人都是手动完成的。如果您在 AS2 中使用了 _global,您可以声明一个名为“_global”的类,其中包含在 AS2 中使用 _global.XXXX 变量的静态变量。
只需想出多种方法来轻松使用 OOP 功能。我给你一个 _global 变量的例子......