Я пытаюсь добавить звуковые эффекты в свою Java-игру, и я не могу этого сделать. Я сделал класс Sound, у меня есть .wav-файлы, но по какой-то причине я не слышу звук, и у меня возникают некоторые ошибки в отношении моего кода, неизвестного источника или чего-то еще, я не уверен в этом. Я дам вам, ребята, класс Sound, мой вызов класса и ошибки.Невозможно воспроизвести звуки в Java
Мои папки выглядят так: «... \ Java Workspace \ SpaceShooter \ src» - для файлов Java .class. "... \ Java Workspace \ SpaceShooter \ src \ sounds" - для моих звуков java. IDE, которую я использую, - Eclipse.
Это класс Sound
import java.applet.Applet;
import java.applet.AudioClip;
public class Sound {
public static final Sound laser = new Sound("sounds/laser.wav");
private AudioClip clip;
public Sound (String filename){
try{
clip = Applet.newAudioClip(Sound.class.getResource(filename));
}catch(Exception e){
e.printStackTrace();
}
}
public void play(){
try{
new Thread(){
public void run(){
clip.play();
}
}.start();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
Это, как я называю мой звук класса.
...
if (code == KeyEvent.VK_UP)
if (!player1weapon.isFalling){
player1weapon.isFalling = true;
Sound.laser.play();
}
И ошибки
java.lang.NullPointerException
at sun.applet.AppletAudioClip.<init>(Unknown Source)
at java.applet.Applet.newAudioClip(Unknown Source)
at Sound.<init>(Sound.java:10)
at Sound.<clinit>(Sound.java:5)
at SpaceInvadersPanel$4.keyPressed(SpaceInvadersPanel.java:71)
at java.awt.Component.processKeyEvent(Unknown Source)
at javax.swing.JComponent.processKeyEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "Thread-2" java.lang.NullPointerException
at Sound$1.run(Sound.java:20)
Пропустить нить. clip.play() не блокирует. Он просто начинает играть в клип и сразу возвращается. – isnot2bad