【问题标题】:Getting a directory file and the ClassLoader for a libGDX Android game获取 libGDX And​​roid 游戏的目录文件和 ClassLoader
【发布时间】: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);
    }
}

【问题讨论】:

    标签: java android libgdx


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-27
      • 1970-01-01
      • 1970-01-01
      • 2014-06-17
      • 1970-01-01
      相关资源
      最近更新 更多