【发布时间】:2014-07-24 15:52:05
【问题描述】:
我正在用 Java 制作钢琴。我有多个应该播放的剪辑,为了节省 RAM,我决定将它们存储在 HashMap 中以备后用。但这失败了,它只播放一次,只播放一次。 Ia 做错了什么?
来源:
//imports etc.
HashMap<String, Clip> cache = new HashMap<String, Clip>(); //defined as global variable, before the constructor
public void play(String file) {
Clip clip = null;
AudioInputStream audio = null;
if (cache.containsKey(file)) {
clip = cache.get(file);
} else {
audio = AudioSystem.getAudioStream(getClass().getResource("/res/sounds/" + file + ".wav"));
clip = AudioSystem.getClip();
clip.open(audio);
cache.put(file, clip);
}
clip.start();
}
注意:String file 只是 .wav 的名称,例如 "C4" 或 "F#5"。我再重复一遍,这段代码第一次播放声音,但以后再也没有。
【问题讨论】:
-
第一次播放声音,之后再也没有。不清楚你是怎么做到的?
-
我有一个按钮可以调用具有特定键名的函数。