在 JS 中动态创建函数

2024-06-21

我正在为 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:对外部库的依赖越少越好)

Edit 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 取决于它是在浏览器上运行还是在服务器上运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 JS 中动态创建函数 的相关文章

随机推荐

  • 通过命令行使用 Python 进行交互式绘图

    我正在尝试使用 Python 以及 numpy 和 matplotlib 库进行一些数据分析和绘图并查看我的绘图 相应地调整我的代码等 所以我需要能够检查绘图 但是 从命令行运行脚本会导致该图形暂时弹出然后立即消失 另一个答案建议添加一个r
  • 如何在 leaflet.js 中设置 layer.control 的样式?

    我正在尝试更改图层控件中的默认下拉菜单图标 我希望图标旁边有文字 有什么办法可以做到这一点吗 也许使用 JQuery 和 CSS 我正在开发一个基于此示例的传单项目 http leafletjs com examples layers co
  • DDD - 跨有界上下文边界聚合根实体使用情况

    在域模型中对实体身份进行建模的一种建议方法是创建值对象而不是使用原始类型 例如在 C 中 public class CustomerId public long Id get set 在我看来 此类应该在整个应用程序中使用 而不仅仅是在域模
  • fresco 的 Proguard 错误

    我正在使用 ProGuard 当我在发布配置中运行项目时 出现以下错误 Warning com facebook imagepipeline bitmaps DalvikBitmapFactory can t find referenced
  • UIWebView:在 Safari 中打开一些链接,一些在视图中打开

    我的应用程序具有在 UIWebView 中呈现的内容 出于文本格式原因 内容中有一些链接 其中一些链接应在移动 Safari 中打开其目标 而其他链接则应在内容中导航 到目前为止 我已经使用 UIWebView 委托捕获了链接请求 在我的实
  • 更改操作栏标题文本颜色

    我正在尝试更改 ActionBar 中标题文本的颜色 但我似乎无法让它工作 这是我尝试使用的风格 在我的应用程序主题中我使用titleTextStyle
  • 有哪些好方法可以控制 GridBagConstraints?

    我对 Swing 编程有点陌生 我发现尽管我很喜欢 GridBagLayout 的强大功能 但如果您有很多组件 那么就会有很多代码行只是设置布局的约束 除了使用可视化编辑器之外 还有哪些好方法可以控制这种情况 请记住 当您添加GridBag
  • 条件数据注释

    有没有办法使数据注释成为有条件的 我有一张桌子Party我存储组织和个人的地方 如果我要添加一个组织 我不需要该字段surname是必需的 但前提是我要添加一个人 public class Party Required ErrorMessa
  • Android 构建 gradle 在特定设备上失败

    我面临一个奇怪的问题 当我编译我的应用程序以在 Android 7 0 的设备上运行它时 它可以工作 但是当我尝试为 Android 4 2 1 的设备进行编译时 它会失败并出现以下错误 错误 任务 app transformClasses
  • C# 是否包含 IParsable 或 ItryParsable

    显然 为您自己的解决方案实现以下接口将相当简单 public interface IParsable
  • SWT - 灰显并禁用当前 shell

    当我在后台运行一个操作时 我将光标设置为忙碌 直到该过程完成 有没有办法也灰显并禁用当前的显示 对话框 外壳 直到该过程完成 我想以视觉方式让用户知道某些东西正在运行 他们必须等待 EDIT plotButton addListener S
  • BlackBerry - Ant 脚本将 JAR 包含在项目中,无需外部依赖项

    这是以下内容的后续内容 BlackBerry 在自己的项目中使用自己的 JAR 文件 https stackoverflow com questions 9976940 blackberry use own jar file in own
  • scipy distance_transform_edt 函数如何工作?

    https docs scipy org doc scipy 0 14 0 reference generated scipy ndimage morphology distance transform edt html https doc
  • 为什么Python在函数中增加变量时会抱怨赋值前的引用?

    为什么Python会抱怨chrome在分配之前被引用 它不会抱怨字典 如果Python 2 5 有所不同的话 那就是这样 def f google browser chrome chrome 1 google dict chrome 1 f
  • Bootstrap 表单助手未选择完整的国家/地区名称

    我添加了引导表单助手来列出国家及其州 最初 它根本没有选择国家名称 但我设法用 jQuery 检索国家 地区名称 但它没有显示完整名称 这是表单的完整代码 div class signup form div class container
  • .py 文件和 .ipy 文件有什么区别?

    我尝试过以两种方式保存 并运行 脚本 并使用两种方式运行它ipython and python 但我没有看到任何区别 这些文件扩展名是多余的吗 Edit python 和 ipython 之间的区别 https stackoverflow
  • 从数据表中删除列

    我有一个包含 20 列的数据表 但我不需要当前处理的所有列 除了 5 列 所以我执行了以下操作来删除列 List
  • VB 脚本 Documents.Open 抛出 424 错误

    所以我有一个vbs脚本 Function test2open sSourceFile sPDFFile Dim wApp As Word Application Dim wDoc As Word Document logStream wri
  • JQuery:如何仅在完成调整大小后调用 RESIZE 事件?

    浏览器窗口大小调整完毕后 如何调用函数 我正在尝试这样做 但遇到了问题 我正在使用 JQuery Resize 事件函数 window resize function how to call only once the browser ha
  • 在 JS 中动态创建函数

    我正在为 JS 游戏创建 AI 引擎 它是由有限状态机组成的 我正在从 XML 加载状态数及其变量值 我还想加载该行为 并且由于我没有时间创建脚本语言 所以我认为在外部文件 XML 节点内 上 插入 JS 代码并在要求 类似的东西