编写处理迷你库,需要从字符串变量名?

时间:2016-09-14 02:17:27

标签: java processing

我正在为Processing创建一个基于sprite的库,其中我有一个用于向程序添加图像的系统。我在Sprite类中有一个方法,要求PImage作为参数。

ArrayList<String> images = new ArrayList<String>();
Iterator<String> i = images.iterator();

void addImage(String img) {
  images.add(img);
}

void loadImages() {
  while(i.hasNext()) {
    String img = i.next();
    PImage ??? = loadImage(img);
  }
}

我想知道是否可以将PImage变量命名为文件名,我将其保存为“img”。我想让这个库尽可能地访问,以便人们尝试精灵,类似于麻省理工学院的Scratch计划。

2 个答案:

答案 0 :(得分:1)

不,你不能创建那样的变量。但您可以使用 HashMap 来实现目标。

基本上,HashMap允许您将键映射到值。您可以使用映射到String值的PImage个键,如下所示:

HashMap<String, PImage> imageMap = new HashMap<String, PImage>();
imageMap.put("imageOne", loadImage("giraffe.jpg"));
imageMap.put("imageTwo", loadImage("elephant.jpg"));

image(imageMap.get("imageOne"), 0, 0);

如果要创建跟踪图像文件的库,可以让用户指定键值以及PImage实例。像这样:

HashMap<String, PImage> imageMap = new HashMap<String, PImage>();

void addImage(String key, String imageLocation) {
  imageMap.put(key, loadImage(imageLocation));
}

PImage getImage(String key){
   return imageMap.get(key);
}

或者您可以使用imageLocation作为密钥。

可以在the reference找到更多信息。

答案 1 :(得分:0)

Java不像动态创建实际的Java变量那样动态,并且您的用户必须事先知道名称才能使用它们。

HashMap将提供功能。使用Apache的FilenameUtils(或您的代码),从文件名/ URL / etc中提取图像的名称,并使用该基本名称作为密钥将加载的图像存储在HashMap中。此示例使用basename,但您可以从输入名称创建任何您喜欢的键。

import org.apache.commons.io.FilenameUtils;

HashMap<String, PImage> images = new HashMap<String, PImage>();

public String addImageURI(String imageURI) {
    String basename = FilenameUtils.getBaseName(imageURI);
    images.put(basename, loadImage(imageURI);
}

public PImage getImage(String imageKey) {
    return images.get(imageKey);
}