Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';不要在Java中播放声音_Java_Resources_Directory_Audio - Fatal编程技术网

Can';不要在Java中播放声音

Can';不要在Java中播放声音,java,resources,directory,audio,Java,Resources,Directory,Audio,我正在尝试为我的Java游戏添加音效,但我没有做到。我制作了Sound类,我有.wav文件,但由于某些原因,我听不到声音,而且我的代码出现了一些错误,未知的源代码或其他东西,对此我不确定。我将为你们提供声音类,我的类调用和错误 我的文件夹如下所示: “..\Java Workspace\SpaceShooter\src”-用于我的Java.class文件。 “..\Java Workspace\SpaceShooter\src\sounds”-用于我的Java声音。 我使用的IDE是Eclips

我正在尝试为我的Java游戏添加音效,但我没有做到。我制作了Sound类,我有.wav文件,但由于某些原因,我听不到声音,而且我的代码出现了一些错误,未知的源代码或其他东西,对此我不确定。我将为你们提供声音类,我的类调用和错误

我的文件夹如下所示: “..\Java Workspace\SpaceShooter\src”-用于我的Java.class文件。 “..\Java Workspace\SpaceShooter\src\sounds”-用于我的Java声音。 我使用的IDE是Eclipse

这是声音课

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)
java.lang.NullPointerException
位于sun.applet.AppletAudioClip。(未知源)
位于java.applet.applet.newAudioClip(未知源)
声音。(Sound.java:10)
声音。(Sound.java:5)
在SpaceInvestersPanel$4.keyPressed(SpaceInvestersPanel.java:71)
位于java.awt.Component.processKeyEvent(未知源)
位于javax.swing.JComponent.processKeyEvent(未知源)
位于java.awt.Component.processEvent(未知源)
位于java.awt.Container.processEvent(未知源)
位于java.awt.Component.dispatchEventImpl(未知源)
位于java.awt.Container.dispatchEventImpl(未知源)
位于java.awt.Component.dispatchEvent(未知源)
位于java.awt.KeyboardFocusManager.redispatchEvent(未知源)
位于java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(未知源)
位于java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(未知源)
位于java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(未知源)
位于java.awt.DefaultKeyboardFocusManager.dispatchEvent(未知源)
位于java.awt.Component.dispatchEventImpl(未知源)
位于java.awt.Container.dispatchEventImpl(未知源)
位于java.awt.Window.dispatchEventImpl(未知源)
位于java.awt.Component.dispatchEvent(未知源)
位于java.awt.EventQueue.dispatchEventImpl(未知源)
位于java.awt.EventQueue.access$200(未知源)
在java.awt.EventQueue$3.run处(未知源)
在java.awt.EventQueue$3.run处(未知源)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.ProtectionDomain$1.doIntersectionPrivilege(未知源)
位于java.security.ProtectionDomain$1.doIntersectionPrivilege(未知源)
在java.awt.EventQueue$4.run处(未知源)
在java.awt.EventQueue$4.run处(未知源)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.ProtectionDomain$1.doIntersectionPrivilege(未知源)
位于java.awt.EventQueue.dispatchEvent(未知源)
位于java.awt.EventDispatchThread.pumpOneEventForFilters(未知源)
位于java.awt.EventDispatchThread.pumpEventsForFilter(未知源)
位于java.awt.EventDispatchThread.pumpEventsForHierarchy(未知源)
位于java.awt.EventDispatchThread.pumpEvents(未知源)
位于java.awt.EventDispatchThread.pumpEvents(未知源)
位于java.awt.EventDispatchThread.run(未知源)
线程“thread-2”java.lang.NullPointerException中的异常
声音$1.run(Sound.java:20)
错误说明了一切

java.lang.NullPointerException
    at sun.applet.AppletAudioClip.<init>(Unknown Source)
    at java.applet.Applet.newAudioClip(Unknown Source)
因此,文件名要么是空指针,要么Sound.class.getResource(文件名)的返回值是空指针

尝试通过打印这些值来调试和检查这些值,并查看它们是什么

Sound sound = Sound.class.getResource(filename);

System.out.println(sound);
System.out.println(filename);

if (filename != null && sound != null) clip = Applet.newAudioClip(sound); 
错误说明了一切

java.lang.NullPointerException
    at sun.applet.AppletAudioClip.<init>(Unknown Source)
    at java.applet.Applet.newAudioClip(Unknown Source)
因此,文件名要么是空指针,要么Sound.class.getResource(文件名)的返回值是空指针

尝试通过打印这些值来调试和检查这些值,并查看它们是什么

Sound sound = Sound.class.getResource(filename);

System.out.println(sound);
System.out.println(filename);

if (filename != null && sound != null) clip = Applet.newAudioClip(sound); 

跳过线程。clip.play()不会阻止。它只是开始播放剪辑并立即返回。跳过线程。clip.play()不会阻止。它只是开始播放剪辑,然后立即返回。你能详细说明一下吗?我明白你的意思,但我不知道该怎么办。没关系,我明白你的意思,而且很有效。你是我的英雄,谢谢。我做了一个编辑,基本上只是验证要使用的对象不为null,因为编译器告诉你:nullpointer。你能详细说明一下吗?我明白你的意思,但我不知道该怎么办。没关系,我明白你的意思,而且很有效。你是我的英雄,谢谢。我做了一个编辑,基本上只是验证要使用的对象不为null,因为编译器告诉你:nullpointer。