0

当我按下 GPIO 27 上的按钮时,GPIO 17 上的 LED 亮起,但声音文件不播放。

当按钮被释放时它出于某种原因播放?

我试过 pygame.mixer.music.load 和 pygame.mixer.Sound

import pygame
from gpiozero import LED, Button

pygame.init()


led = LED(17)
button = Button(27)

while True:
    if button.is_pressed:
        pygame.mixer.music.load("zelda.mp3")
        pygame.mixer.music.play()
        led.on()



    else:
        led.off()

我需要它,所以按下按钮 LED 亮起并播放声音

4

1 回答 1

0
  1. 出于某种原因,您必须为 pygame 制作一个显示窗口(它的大小无关紧要)(可能是您在代码的其他部分制作了该窗口)
  2. play()函数必须有足够的时间来播放,例如我input在最后一行放了一个方法来暂停程序以获取表单输入,所有这些都是为了给足够的时间来播放音乐。如果您删除那条线音乐播放但只有几纳秒!即实际上它不会播放。(在像 Pycharm 这样的调试环境中,您可能会听到一些声音,但您听不到)
  3. while像您的代码这样的循环中,当您释放按钮时播放音乐是完全可以的,但是为什么呢?因为play() 函数在到达另一个play()函数时停止,并且在你的while循环中,只要你没有释放键,play() 函数就会一个接一个地开始播放音乐,但是当它们想要播放时,下一个play()函数就会到达。这个过程一直持续到最后while TRUE,在您释放密钥之前的时间非常短。

import pygame
pygame.init()
pygame.display.set_mode((200,100))
pygame.mixer.music.load("zelda.mp3")
pygame.mixer.music.play()

x=input()

于 2019-09-08T10:16:07.513 回答