获取 libGDX Android 游戏的目录文件和 ClassLoader
Posted
技术标签:
【中文标题】获取 libGDX Android 游戏的目录文件和 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)
第一个可以是任何目录。第二个,我什至不知道它是干什么用的。
我的问题是,什么 ClassLoader
和 File
参数应该是?我需要获取它们并在 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 Android 游戏的目录文件和 ClassLoader的主要内容,如果未能解决你的问题,请参考以下文章