获取 libGDX Android 游戏的目录文件和 ClassLoader

2022-09-03 16:01:29

我有一个针对Android的libGDX游戏项目,我想在其中执行一个Groovy脚本。

为此,我正在检查此示例代码:https://github.com/melix/grooidshell-example

他们设法在Android上的Java中执行Groovy嵌入。特别 (https://github.com/melix/grooidshell-example/blob/master/GroovyDroid/src/main/java/me/champeau/groovydroid/GrooidShell.javaGrooidShell.java)

我已经设法在libGDX项目的Android启动器中实现了大部分代码。但是,我无法运行它,因为我缺少两个参数:

public GrooidShell(File tmpDir, ClassLoader parent) {

第一个可以是任何目录。第二个,我甚至不知道它有什么用。

我的问题是,和参数应该是什么?我需要获取它们并在libGDX类中使用它们,如下所示:ClassLoaderFileAndroidLauncher

public class AndroidLauncher extends AndroidApplication {
    @Override
    protected void onCreate (Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
        initialize(new MyGdxGame(), config);
    }
}

答案 1

首先要注意:GroovyActivity.groovy

GrooidShell shell = new GrooidShell(applicationContext.getDir("dynclasses", 0), this.classLoader)

GrooidShell 的第一个参数想要创建一个名为 “dynclasses” 的目录,并带有默认的 premission:

公共抽象文件获取目录(字符串名称,int 模式)

检索(如果需要)创建一个新目录,应用程序可以在其中放置自己的自定义数据文件。可以使用返回的 File 对象创建和访问此目录中的文件。请注意,通过 File 对象创建的文件只能由您自己的应用程序访问。您只能设置整个目录的模式,而不能设置单个文件的模式。

参数

名称 要检索的目录的名称。这是作为应用程序数据的一部分创建的目录。模式 操作模式。使用 0 或 MODE_PRIVATE 作为默认操作,MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE来控制权限。

返回

所请求目录的文件对象。如果该目录尚不存在,则将已创建该目录。

第二个参数是指当前正在运行的 ClassLoader,您可以按原样或在时髦脚本中使用它。你也可以在你的活动java代码中使用getApplicationContext().getClassLoader()。this.classLoaderthis.class.classLoader

getClassLoader()
Embedding Groovy


答案 2

推荐