我使用以下逻辑加载来自不同线程的声音以在我的游戏继续时加载它。 虽然它适用于非常小的wav文件,但有时候,我必须等到它加载。
如何确保预先加载?
public class MusicPlayer implements Runnable {
String sound;
Player p;
public MusicPlayer(String sound)
{
this.sound = sound;
InputStream is = getClass().getResourceAsStream("/"+sound);
try
{
p = Manager.createPlayer(is, "audio/X-wav");
}
catch(Exception e)
{}
}
public void start()
{
Thread t = new Thread(this);
t.start();
}
public void run()
{
try
{
p.start();
}
catch(Exception e)
{}
}
}
答案 0 :(得分:1)
最可靠的解决方案是创建一个进度条并等待声音加载,这样可以让用户稍微娱乐一下,因为他可以看到移动的东西
答案 1 :(得分:0)
尝试
t.setPriority(Thread.MAX_PRIORITY);
答案 2 :(得分:0)
以防任何人需要它,我找到的最好的方法实际上是在主线程本身初始化对象。如果不是最快,那将是最可靠的解决方案。
答案 3 :(得分:-1)
您可以添加延迟I.E Thread.sleep(100);这会将线程延迟100毫秒