为通过 runSketch 触发的 PApplet 设置数据文件夹位置

set data folder location for PApplet triggered through runSketch

我是来自 Clojure 的 运行 Processing 草图(PApplet 子类,通过从 Processing 草图导出创建)。基本流程是

  1. 导出草图
  2. 在导出的应用程序中找到 jar 文件
  3. 将这些 jar 文件安装到本地 maven 仓库中
  4. 使用 lein
  5. 在 clojure 中加载库

代码在 this GH repo 中,包括(合理地)关于如何设置和重现问题的最少说明。

加载基本草图有效,但是当我创建一个调用例如loadImage() 从我的 data 文件夹加载图像,草图找不到它。

我知道这是一种令人费解的方法 - 这对我来说部分是一种学习练习,部分是因为我是一个 lisp 人而不是 JVM 人。

有什么方法可以动态地告诉 PApplet 子类它的数据文件夹在哪里?还是我到处都是绝对路径?

编辑:呃,真是一团糟。看起来问题是我实际上将每个 PApplet 子类包装在 clojure proxy 中(这样我就可以拦截某些方法并使各种草图一起玩得很好)但是 Processing 找到的方式数据路径涉及 looking at the ProtectionDomain to find the root source path,所以这不会起作用,因为我目前正在尝试。回到绘图板...

所以您正在使用 maven link 从 Processing 导出的 jar,而这些 jar 找不到 sketch 目录?

如果我是你,我会看两个地方:

The Processing JavaDoc 包含对 Processing 中每个变量和函数的详细参考。特别检查 PApplet class 并检查以下内容:

  • ARGS_SKETCH_FOLDER
  • 选择输入()
  • 选择输出()
  • sketchFile()
  • sketchOutputPath() 和 sketchOutputStream()
  • sketchPath()

我敢打赌,通过设置第一个变量或重写其中一些函数,您可以让 Processing 查看任何您想要的地方。

如果您需要更多详细信息,the Processing source 将准确告诉您 Processing 如何使用上述所有内容。