我有一个适用于Android的libGDX游戏项目,我想在其中执行一个Groovy脚本。
为此,我正在研究此示例代码:https://github.com/melix/grooidshell-example
他们设法在Android上执行嵌入Java的Groovy。特别是GrooidShell.java
(https://github.com/melix/grooidshell-example/blob/master/GroovyDroid/src/main/java/me/champeau/groovydroid/GrooidShell.java)
我已经设法在libGDX项目的Android启动器中实现了大部分代码。但是,我无法运行它,因为我缺少两个参数:
public GrooidShell(File tmpDir, ClassLoader parent) {
第一个可以是任何目录。第二个,我甚至不知道它是什么。
我的问题是,什么是ClassLoader
和File
参数应该是什么?我需要得到它们并在AndroidLauncher
类的libGDX中使用它们,如下所示:
public class AndroidLauncher extends AndroidApplication {
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
initialize(new MyGdxGame(), config);
}
}
答案 0 :(得分:4)
首先要注意GroovyActivity.groovy
:
GrooidShell shell = new GrooidShell(applicationContext.getDir("dynclasses", 0), this.classLoader)
grooidShell的第一个参数想要创建一个名为" dynclasses"的目录。默认保留:
public abstract File getDir (String name, int mode)
检索,创建需要的新目录,应用程序可以在其中放置自己的自定义数据文件。您可以使用返回的File对象来创建和访问此目录中的文件。请注意,通过File对象创建的文件只能由您自己的应用程序访问;您只能设置整个目录的模式,而不能设置单个文件的模式。
参数
name要检索的目录的名称。这是作为应用程序数据的一部分创建的目录。 模式操作模式。使用0或MODE_PRIVATE作为默认操作,使用MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE来控制权限。
退货
请求目录的File对象。如果该目录尚不存在,则该目录已被创建。
第二个参数 this.classLoader
指的是当前运行的ClassLoader,您可以按原样使用它,或者在groovy脚本中使用this.class.classLoader
。您还可以在活动java代码中使用 getApplicationContext().getClassLoader()
。