2

我正在尝试将一些预先存在的 html/JavaScript 文件转换为 Flex。我尝试进行一些研究,看看是否有任何编译器可以将代码从 javascript 编译为 actionscript。据我所知,有很多方法可以将 actionscript 转换为 javascript,但我找不到任何相反的方法。有谁知道是否有办法做到这一点,还是我应该编写自己的工具?

4

3 回答 3

7

我想你会发现这行不通,因为 AS3 是一种严格类型的语言,而 Javascript 不是。即使存在这样的编译器,您的 ActionScript 也可能会因为它会创建一堆通用对象而遇到问题。

简而言之:ActionScript to Javascript 是可行的,因为 Javascript 更宽松,但丢失了很多结构。继承、类型等

但反过来说,没有办法重新添加到 ActionScript 所需的结构中。

正如其中一位评论者所提到的,您可能需要手动进行此转换。

另一个想法:Flash 播放器可以与 Javascript 对话。可能不需要将 Javascript 转换为 ActionScript,而只需创建一些函数来通过其 ExternalInterface 类与 Flash SWF 文件对话。只需将 Javascript 保留在 Javascript 中即可。

于 2012-06-07T18:08:02.187 回答
4

我强烈建议完全重写,因为它们(JS 和 AS)都是 ECMA 标准语言(如果我错了,请纠正我)

但是,如果您真的需要一种自动化的方式,请尝试:

  1. 将您的 JS 转换为 haxe
  2. 将输出 Haxe 编译为 AS

这是我认为最简单的解决方案。

于 2012-06-13T07:30:53.523 回答
2

你最好编写自己的工具。编写 javascript 的方法有很多种,包括它是无类型的,因此很难编写一个可以转换所有内容的万能的解决方案。如果它是一个库,那么转换操作码而不是代码到代码可能更有意义,但这在很大程度上取决于 javascript 的编写方式。

这会很痛苦,这是肯定的。

  • js 是无类型的,actionscript 是“类型的”。我想一切都可能是一个对象,它会运作良好
  • js 函数作用域的处理方式不同。
  • actionscript 中的匿名函数调用通常不受欢迎,并且会损害性能
  • actionscript 中的 setTimeOut 之类的东西也很不受欢迎,enter_frame 和 timer 可能更有用
  • actionscript 中的垃圾收集处理方式略有不同——事件分派也是如此
于 2012-06-11T20:55:28.557 回答