1

クラス用のゲームを書いていますが、音声や画像を追加するのに問題があります。AndrewDavisonのKillerGameProgrammingの本からフレームワークを受け取って、それを正確にコピーしているように感じますが、サウンドを再生したり画像を表示したりしようとするとnullになります。

ファイル名は正しく読み取られていますが、音が見つかりません。私はファイルにmp3を持っています。ディレクトリが間違っているのではないかと思ったので、/Soundsと/src / Soundsの間で変更し続けましたが、役に立ちません。私は完全に立ち往生しています。

編集:私が投稿したばかりのがらくたは、インスタンス化する前にimsLoaderを渡すという単純な問題でした。はぁ。soundLoaderが同じ問題であるかどうかを確認します。みんなありがとう。

編集2:サウンドの問題は同じではありません。サウンドファイルの新しい入力ファイルストリームを作成すると、nullの結果が表示されます。

これは、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
4

2 に答える 2

0

NullPointerExceptionが発生している場合は、おそらくこの行からです

image = imsLoader.getImage(imageName);

おそらくimsLoadernullですか?

于 2013-03-09T17:28:29.293 に答える
0

入力ストリームを試行する代わりに、を使用してURLを形成します

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

この変更をお勧めする理由は、メソッドが「クラスのパッケージではなく、クラスパスのルートから検索する」という意味につながると解釈することを知っているからです。getResource(..)/

私はgetResourceAsStream(..)先頭をどのように扱うかを正確に特定したことはありません/が、それは異なっているように見えました。

于 2013-03-09T18:42:33.180 に答える