Я делаю небольшой графический интерфейс с python, используя модули cocos2d и pyglet. Графический интерфейс должен воспроизводить звук при нажатии «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.