2016-09-14 24 views
2

我正在制作一个基于sprite的库Processing,其中我有一个用于向程序添加图像的系统。我在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计划。

回答

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找到。

0

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

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

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); 
}