2009-06-11 14 views
3

私はSDLを学び、小さなゲームを作成しようとしています。ユーザーがスペースバーを押すと、サウンドが再生されます。これはうまくいきますが、再生に約5秒かかります...どうすればこの問題を解決できますか?私は実際のファイルをチェックして、遅延がその一部であるかどうかを確認しましたが、そうでないことが判明しました。Mix_Chunkの再生に予期せぬ遅れがあります

SDL with C++ with win vista。

... 
Mix_OpenAudio(22050, MIX_DEFAULT_FORMAT, 2, 4096) 
... 

    main() 
    { 

    ... 

    Mix_PlayMusic(BG_Music, 0); //background music 

     while(quit == false) 
     { 
      fps.start(); 
      fire.handleInput(event, ship.get_x_pos()); 
    ... 
    } 

ハンドル入力機能:それ以上が必要とされている場合は

void lasersC::handleInput(SDL_Event &event, int x) 
{ 
    Uint8 *keystates = SDL_GetKeyState(NULL); 

    if (keystates[ SDLK_SPACE ] && delay == 0) 
    { 
     Mix_PlayChannel(-1, laser, 0); 
     fired * F = new fired(NULL, S_HEIGHT - 50, x + 20); 

     F->shot = lasers; 
     F->y_pos = S_HEIGHT - 50; 
     F->x_pos = x + 20; 

     weps.push_back(F); 
     delay = 10; 
    } 
} 

は、私に知らせて

は、ここではいくつかの関連するコードです。

+0

ありがとうございます!これは私にナッツを運転していた。 – Malabarba

答えて

5

SDLをコンパイルするとき、通常はチェックがDirectXのヘッダのためにそこにある(明らかに)

あなたは、DirectXのサポートを再コンパイルしようとすることはできますか?

また、クライアント側でどのくらいバッファリングしていますか?それは問題かもしれません。

EDITから以下のコメントの後

  1. あなたのバッファのサイズを大きくしてください。
  2. DirectXのサポートで再コンパイルすることは、次のソースのヘッダーをインクルードして、SDLがそれらのチェックをスキップするようにすることです。
+0

私はそれがどういう意味か分かりません。 – Justen

+0

@バッファリング、Mix_OpenAudio(22050、MIX_DEFAULT_FORMAT、2、4096) – Justen

+0

上記の編集をチェックしてください。 –

関連する問題