我没有任何代码可以特别显示链接,因为这是一个非常普遍的问题......你看,我制作了一个带有8个AudioClip变量的小游戏小程序,这些应该每次都会播放用户采取了行动。例如:玩家点击次数=拍摄声音播放。问题是,当我添加这些AudioClip文件的那一刻,我的程序只是非常冻结,如果冻结特别糟糕,就会变得无法播放。
我这样做的简单方法就在这里(实际上来自书)
AudioClip playerShooting;
playerShooting=getAudioClip(getDocumentBase(),"PlayerShooting.wav");
然后,只要用户点击,我就会使用以下内容:
playerShooting.play():
在添加这些wav文件之前,我的程序运行顺利。它们甚至都不长。我在哪里出错了,怎样才能删除随机冻结?
编辑:
这是我正在运行的代码:
public void mouseClicked(MouseEvent e)
{
if(playerAlive)
{
timeShotsAfter=System.currentTimeMillis();
if((timeShotsAfter-timeShotsBefore)>=100)
{
if(shotIndex<10)
{
playerShooting(); //Here is where I call the function
shotFiredX[shotIndex]=currentX;
shotFiredY[shotIndex]=currentY;
shotSize[shotIndex]=20;
}
if(shotIndex<10)
shotIndex++;
else
shotIndex=0;
timeShotsBefore=System.currentTimeMillis();
}
else{}
toggleShooting=false;
}
}
这是功能:
public void playerShooting()
{
new Thread(
new Runnable() {
public void run() {
try {
playerShooting.play();
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
答案 0 :(得分:0)
在另一个主题中播放音频片段? 编辑:
new Thread(
new Runnable() {
public void run() {
try {
playerShooting.play():
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
编辑:
我不太确定这部分是否正确:
getAudioClip(getDocumentBase(), “PlayerShooting.wav”);
尝试添加System.out.println(getDocumentBase());
以查看位置是否正确。
答案 1 :(得分:0)
我回来时遇到了同样的问题。我为解决我的问题所做的是更新到JDK 8.在之前的JDK版本中,音频文件似乎是一个事后的想法,可能是错误的。如果你仍然遇到问题,JDK 8能够播放比wav小得多的mp3文件(你可能想试试这个)。确保在剪辑完成后使用sound.stop()
,因为这可能会释放一些内存。