声音和图像文件无效

时间:2013-03-09 17:22:21

标签: java image audio

我正在为一堂课写游戏,但却无法添加声音和图像。我们得到了安德鲁戴维森的杀手游戏编程书中的框架,我觉得我正在复制它,但每当我尝试播放声音或显示图像时我都会得到null。

文件名正确读取,但找不到声音。我在文件中有mp3。我想也许目录是错误的,所以我一直在/ Sounds和/ src / Sounds之间改变它,但它没有帮助。我完全卡住了。

编辑:在我刚刚发布的所有垃圾之后,这是一个在实例化之前传入imsLoader的简单问题。叹。我将检查soundLoader是否是同一个问题。谢谢你们。

编辑2:声音问题不一样。在为声音文件创建新的输入文件流时,我得到一个空结果。

这是更改URL后的SDL方法。

   try {
        java.net.URL inFile = this.getClass().getResource("/Sounds/SDLInfo.txt");
        System.out.println("url " + inFile);
        InputStreamReader in = new InputStreamReader(inFile.openStream());
      if(in == null){
          System.out.println("in is null wtf");
          System.out.println("sndsFNm " + sndsFNm);
          System.out.println("in contents " + this.getClass().getResourceAsStream(sndsFNm));
      }
      BufferedReader br = new BufferedReader(in);
      StringTokenizer tokens;
      String line, name, fnm;
      while((line = br.readLine()) != null) {
        if (line.length() == 0)  // blank line
          continue;
        if (line.startsWith("//"))   // comment
          continue;

        tokens = new StringTokenizer(line);
        if (tokens.countTokens() != 2)
          System.out.println("Wrong no. of arguments for " + line);
        else {
          name = tokens.nextToken();
          fnm = tokens.nextToken();
          load(name, fnm);
        }
      }
      br.close();
    } 
    catch (IOException e) 
    { System.out.println("Error reading file: " + sndsFNm);
      System.exit(1);
    }

我在我的主类中调用此方法之前实例化SDL加载器,如下所示:

    private static final String SDL_FILE = "SDLInfo.txt";
    private SDLLoader sdlLoader;
//initialize loaders and start music
sdlLoader = new SDLLoader(SDL_FILE); 
sdlLoader.play("bgmusic", true);

堆栈跟踪

url file:/C:/Documents%20and%20Settings/MyName/Desktop/java%20programs/Zombie%20City/bin/Sounds/SDLInfo.txt
Problem with Sounds/peaceful_music.mp3
-- bgmusic/peaceful_music.mp3
Reading file: Sounds/clipsInfo.txt
url file:/C:/Documents%20and%20Settings/MyName/Desktop/java%20programs/Zombie%20City/bin/Sounds/SDLInfo.txt
Problem with Sounds/peaceful_music.mp3
-- bgmusic/peaceful_music.mp3

2 个答案:

答案 0 :(得分:0)

如果你得到一个NullPointerException,它可能来自这一行

image = imsLoader.getImage(imageName);

也许imsLoader为空?

答案 1 :(得分:0)

不是尝试输入流,而是使用

形成一个URL
this.getClass().getResource("/Sounds/SDLInfo.txt"); // Note leading '/' - v. important.

我推荐此更改的原因是我知道 getResource(..)方法会将前导/解释为“从类的根搜索-path,而不是类“。

的包

我从来没有明确指出getResourceAsStream(..)如何对待领先的/,但似乎......不同。