cocos2d と pyglet モジュールを使用して、Python で小さな GUI を作成しています。GUI は、"h" が押されている間サウンドを再生し、離すと停止します。ここでの問題は、これに対する解決策が見つからないことです。このサイトを検索した後、私はこの質問を見つけました - pygletで連続して音楽を再生する方法 、これの問題は、開始後にサウンドを停止できないことです。
編集:キーリリースまでサウンドを再生する方法を見つけましたが、別の問題に遭遇しました
現在、音楽を再生するコードは次のようになっています。
class Heartbeat (cocos.layer.Layer):
is_event_handler=True
def __init__ (self):
super(Heartbeat, self).__init__()
global loop, music, player
music = pyglet.media.load('long_beep.wav')
loop=pyglet.media.SourceGroup(music.audio_format, None)
player=pyglet.media.Player()
loop.queue(music)
player.queue(loop)
def on_key_press(self, key, modifiers):
if chr(key)=='h':
loop.loop=True
player.play()
def on_key_release (self, key, modifiers):
if chr(key)=="h":
loop.loop=False
このコードは、「h」キーを初めて押したままにすると機能しますが、それ以降の試行では機能しません。Python は例外を発生させません。最初のリリース後に発生した "h" キーの押下を無視しているようです。
注: ステートメント -if chr(key)=="h"
はキープレス処理の最適な解決策ではないかもしれませんが、私は cocos2d および pyglet モジュールを使用することに比較的慣れていません。