簡體   English   中英

無法用Java播放聲音

[英]Can't play sounds in Java

我試圖在我的Java游戲中添加聲音效果,但是我沒有這樣做。 我制作了Sound類,我具有.wav文件,但是由於某些原因我聽不到聲音,並且在代碼,未知源或某些內容方面遇到了一些錯誤,對此我不確定。 我將為大家提供Sound類,我的類調用和錯誤。

我的文件夾如下所示:“ ... \\ 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
    at sun.applet.AppletAudioClip.<init>(Unknown Source)
    at java.applet.Applet.newAudioClip(Unknown Source)

錯誤發生在這里:

clip = Applet.newAudioClip(Sound.class.getResource(filename)); 

因此,filename是一個空指針,或者Sound.class.getResource(filename)的返回值是一個空指針。

嘗試通過打印這些值來調試檢查這些值,然后查看它們是什么。

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

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM