2016-12-05 6 views
0

だから私は、サウンドを再生するコードのこの部分を持っているが、それは同じディレクトリにある場合にのみ動作しますpygletは、同じディレクトリからサウンドを再生

# Doesnt work 
current_directory = os.getcwd() 
path = os.path.join(current_directory + "\sounds\\monster_roar.wav") 
music = pyglet.resource.media(path) 

# does work 
music = ("monster_roar.wav") 
#music.play() 

pyglet.resource.ResourceNotFoundException:リソース「C :\ Users \ Joshua Nixon \ Documents \ college_work \ extended_project \ game \ new \ sounds \ monster_roar.wav "がパスに見つかりませんでした。ファイル名に適切なキャプリアライゼーションがあることを確認します。

何が欠けていますか?

答えて

0

このような場合は、相対パスの代わりに絶対パスを使用することを検討する必要があります。しかし、あなたのエラーは、おそらく次のように固定することができます。

代わりの music = pyglet.resource.media(path)

を使用して... music = pyglet.media.load(path)を使用してみてください。

+0

私はあなたを愛しています。相対パスと絶対パスの違いを説明できますか? Haventはそれらの言葉を聞いた –

+0

'\ sounds \ monster_roar.wav'のような相対パスを使うときは、あなたが使っている関数がどこかでフルパスを計算しなければなりません。特に、異なるプラットフォーム上でプログラムを実行しているときは、エラーが発生しやすくなります。 絶対パスは 'C:\ Users \ Bob \ Game \ sounds \ monster_roar.wav'のようなものです。しかし、これを文字列として書き出すことはできません。os.path.abspath( "sounds \ monster_roar.wav")を使用して計算すると、異なるプラットフォームで異なる結果が得られます。 –

+0

あなたのケースではあまり心配しませんが、絶対パスを使用すると、基本的に異なるパスに参加する必要がなくなります(つまり、エラーの可能性が減ります)。 –

関連する問題