这是一个有趣的架构查询。我有一段代码需要在服务器(在 Node.js 下)和客户端(在使用 Actionscript 3 编写的 Flash 10 应用程序中)运行。该代码主要是相当复杂的对象操作,它不进行任何 API 调用,并且在两种情况下都可以正常工作。
到目前为止,该项目只是一个演示,因此我很乐意将代码复制并粘贴到这两个地方。但继续推进这一点可能会很有趣。
那么你会怎么做呢?
我认为没有简单的方法可以让 Flash SDK(必须在没有 IDE 的情况下构建)来读取 .js 文件并执行一些有用的操作。
我唯一的想法是我可以编写一个代码生成器来获取 .js 文件并将其放入 ActionScript 包装器中。
有没有我错过的明显方法?
为了抢占一个明显的答案,我了解像 Haxe 这样的跨平台语言。
最佳答案
一种可能的方法是在包装器 Actionscript 代码中使用 include。只是一个快速且非常简单的测试:
package {
import flash.display.Sprite;
import flash.text.TextField;
public class Main extends Sprite {
private var _alertTxt:TextField;
include "some.js"
public function Main() {
_alertTxt = new TextField();
_alertTxt.multiline = true;
_alertTxt.height = 400;
_alertTxt.width = 400;
addChild(_alertTxt);
run();
}
public function alert(msg) {
_alertTxt.text += msg + "\n";
}
}
}
一些.js
function run() {
alert("run");
var obj = {
a : 'hello',
b : 4.5,
c : false
};
loop(obj);
}
function loop(obj) {
for (var field in obj) {
alert(obj[field]);
}
}
从命令行编译(您可能需要添加其他选项):
mxmlc -strict=false Main.as
如果不将 strict 设置为 false,则由于缺少类型声明而无法编译。
关于javascript - 在 Actionscript3 和 Javascript 中使用代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2705037/