获取 libGDX And​​roid 游戏的目录文件和 ClassLoader

Posted

技术标签:

【中文标题】获取 libGDX And​​roid 游戏的目录文件和 ClassLoader【英文标题】:Getting a directory file and the ClassLoader for a libGDX Android game 【发布时间】:2015-02-08 02:12:33 【问题描述】:

我有一个适用于 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) 

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

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

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”的目录,默认权限:

public abstract File getDir (String name, int mode)

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

参数

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

返回

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

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

getClassLoader()Embedding Groovy

【讨论】:

以上是关于获取 libGDX And​​roid 游戏的目录文件和 ClassLoader的主要内容,如果未能解决你的问题,请参考以下文章

使用 RX And​​roid 进行并行 API 调用

如何在 libGDX 上保存高分

如何使用libgdx编写一个简单的游戏

开源java游戏框架libgdx专题-07-文件处理

开源java游戏框架libgdx专题-12-开发工具-图片合成

在 libgdx 中,如何从后退按钮获取输入?