2013-03-09 3 views
1

Я пишу игру для класса и не могу добавить звук и изображения. Мы получили рамки от книги программирования игр Killer Game от Эндрю Дэвисона для работы, и мне кажется, что я копирую ее точно, но я получаю нуль, когда я пытаюсь воспроизвести звук или отобразить изображение.Звуковые и графические файлы, подходящие к нулю

Имя файла правильно читается, но оно не находит звук. У меня есть mp3 в файле. Я подумал, что каталог неправильный, поэтому я постоянно меняю его между/Sounds и/src/Sounds, но это не помогает. Я полностью застрял.

Редактировать: после всего, что дерьмо я только что опубликовал это была простая проблема с передачей в imsLoader, прежде чем создавать его. Вздох. Я проверю, есть ли проблема с soundLoader. Спасибо, парни.

Редактировать 2: проблема звука не совпадает. Я получаю нулевой результат при создании нового потока входных файлов для моего звукового файла.

Это метод SDL после внесения изменений в URL-адрес.

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 
+0

* «Я не уверен, какой другой код необходим» * Для лучшей помощи, скорее всего, отправьте сообщение [SSCCE] (http://sscce.org/). Тогда у меня может возникнуть смутное представление о том, что такое 'imsLoader' и что делает метод' getImage (String) 'и как он это делает. BTW. Я бы дал 95% вероятность того, что проблема заключается в попытке доступа к встроенным ресурсам, как если бы они были свободными ресурсами в файловой системе (используйте «Файл» для доступа к ним), а не для загрузки их «URL». –

+0

Я изменил вопрос, так как ваша помощь позволила мне решить проблему с изображением, я считаю. Я думаю, что я включил все необходимое для устранения проблемы звука. – user1814946

+0

* «Я думаю, что я включил все необходимое» * Я не вижу SSCCE. Вы читали связанный документ или просто догадывались, что это значит? –

ответ

0

Вместо того, чтобы пытаться для входного потока, формируют URL с помощью

this.getClass().getResource("/Sounds/SDLInfo.txt"); // Note leading '/' - v. important. 

Причина, почему я рекомендую это изменение в том, что я знаю, что метод getResource(..) будет интерпретировать ведущий / означает «поиск от корень пути класса, в отличие от пакета класса ».

Я никогда не фиксировал точно, как getResourceAsStream(..) относится к ведущему /, но это казалось ..различным.

0

Если вы получаете NullPointerException, это, вероятно, из эта линия

image = imsLoader.getImage(imageName);

Возможно imsLoader есть null?

+0

* «Возможно ..» * .. Это должно быть комментарий, а не ответ? –

Смежные вопросы