我正在为 JS 游戏创建 AI 引擎,它由有限状态机组成。我正在从 XML 加载状态数及其变量值。我还想加载该行为,并且由于我没有时间创建脚本语言,所以我认为在外部文件(XML 节点内)上“插入”JS 代码并在需求。
类似的事情
<evilguy1>
<behaviour>
this.x++;
</behaviour>
<behaviour>
this.y++;
</behaviour>
</evilguy1>
类似的事情:
function behaviour_1(){
this.x++;
}
function behaviour_2(){
this.y++;
}
我的问题是,现在我已经加载了代码,我该如何执行它?我想为每个代码“节点”创建一个具有唯一名称的函数,然后从游戏逻辑中调用它们,但我不知道这是否可能(因为您可以从 HTML 加载更多 JS 代码,所以您应该也可以从 JS 代码中完成,不是吗?)。如果没有的话有类似的解决方案吗?提前致谢!
(PS:外部库依赖越少越好)
编辑1:
好的,现在我知道如何创建函数来包含代码
window[classname] = function() { ... };
最佳答案
那么,您可以使用 Function
构造函数,如下例所示:
var f = new Function('name', 'return alert("hello, " + name + "!");');
f('erick');
这样,您就可以使用参数和函数体定义一个新函数,并将其分配给变量 f。您可以使用哈希集并存储许多函数:
var fs = [];
fs['f1'] = new Function('name', 'return alert("hello, " + name + "!");');
fs['f1']('erick');
加载 xml 取决于它是在浏览器还是服务器上运行。
关于javascript - 在 JS 中动态创建函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20129236/