我正在尝试将一些预先存在的 html/JavaScript 文件转换为 Flex。我尝试进行一些研究,看看是否有任何编译器可以将代码从 javascript 编译为 actionscript。据我所知,有很多方法可以将 actionscript 转换为 javascript,但我找不到任何相反的方法。有谁知道是否有办法做到这一点,还是我应该编写自己的工具?
3 回答
我想你会发现这行不通,因为 AS3 是一种严格类型的语言,而 Javascript 不是。即使存在这样的编译器,您的 ActionScript 也可能会因为它会创建一堆通用对象而遇到问题。
简而言之:ActionScript to Javascript 是可行的,因为 Javascript 更宽松,但丢失了很多结构。继承、类型等
但反过来说,没有办法重新添加到 ActionScript 所需的结构中。
正如其中一位评论者所提到的,您可能需要手动进行此转换。
另一个想法:Flash 播放器可以与 Javascript 对话。可能不需要将 Javascript 转换为 ActionScript,而只需创建一些函数来通过其 ExternalInterface 类与 Flash SWF 文件对话。只需将 Javascript 保留在 Javascript 中即可。
我强烈建议完全重写,因为它们(JS 和 AS)都是 ECMA 标准语言(如果我错了,请纠正我)
但是,如果您真的需要一种自动化的方式,请尝试:
- 将您的 JS 转换为 haxe
- 将输出 Haxe 编译为 AS
这是我认为最简单的解决方案。
你最好编写自己的工具。编写 javascript 的方法有很多种,包括它是无类型的,因此很难编写一个可以转换所有内容的万能的解决方案。如果它是一个库,那么转换操作码而不是代码到代码可能更有意义,但这在很大程度上取决于 javascript 的编写方式。
这会很痛苦,这是肯定的。
- js 是无类型的,actionscript 是“类型的”。我想一切都可能是一个对象,它会运作良好
- js 函数作用域的处理方式不同。
- actionscript 中的匿名函数调用通常不受欢迎,并且会损害性能
- actionscript 中的 setTimeOut 之类的东西也很不受欢迎,enter_frame 和 timer 可能更有用
- actionscript 中的垃圾收集处理方式略有不同——事件分派也是如此