0

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 モジュールを使用することに比較的慣れていません。

4

1 に答える 1