使用 Java 的 ScriptEngine 函数读取 JavaScript 文件时,文件中与文件中的其他对象交互的函数不起作用

when reading a javascript file with java's scriptengine functions in the file that interact with other objects in the file don't work

提问人:Jandrik 提问时间:10/6/2016 更新时间:10/6/2016 访问量:104

问:

我正在制作一个基本的 2D 游戏引擎,该引擎使用 java 进行所有基本引擎操作,并使用 javascript 进行游戏特定操作。在 javascript 文件中,我有一个由我的 java 逻辑线程调用的 tick 函数;

    tick = function(){print(keyBinds[i].getState()}

keyBinds 对象在文件的全局范围内定义

    keyBinds = [ new keyEvent('A', false), new keyEvent('ENTER', false)...

我知道 keyBind 对象有效,因为在 javafx 阶段线程中,我使用该对象来设置 keylistener 问题是当我调用 tick 函数时,我得到这个

错误 javax.script.ScriptException:TypeError:无法在第 46 行调用 undefined

在 java 中,我用这个设置了引擎

    InputStream b = getClass().getResourceAsStream("/script.js");
        Reader a = new InputStreamReader(b);
        engine.eval(a);
        js = (Invocable)engine;

我用这个调用 tick 函数

    return js.invokeFunction("tick");

任何人都知道为什么 JavaScript 函数看不到同一文件中定义的任何对象。

JavaScript Java 范围 未定义引用 ScriptEngine

评论


答: 暂无答案