[英]Troubleshooting playing of audio files in pygame
我遇到崩溃,无法在pygame中播放音频文件。 尝试触发音频文件时收到此错误:重新启动:/ Users / matthewmacy / Desktop / WORKING platupdate PROJECT_HELPED / main.py SELFTRACKS! 4在我的代码中,我生成了一个介于1到5之间的随机数(self.tracks = random.randint(1,5)),该数字可以确定随机播放的曲目。 我可以成功播放初始初始屏幕的曲目,但是随后的游戏音乐无法播放。 我认为潜在的问题可能是在打开游戏音频时剪切了启动屏幕音频。 我认为如果有一个计时器在5秒钟后开始播放音乐,则可以在音频开始/停止之间留出足够的时间。 如果有人知道解决方法,请填写。
def show_start_screen(self):
# game splash/start screen
pg.mixer.music.load('beautiful_reverb.wav')
pg.mixer.music.play(-1)
bg = pg.image.load("1366X768EDITEDflag.png")
self.screen.blit(bg,(0,0))
pg.display.flip()
self.wait_for_key()
#Go to controls Screen and cut music when clicked
controls = pg.image.load("1366X768ControlsFINAL.png")
self.screen.blit(controls,(0,0))
pg.display.flip()
self.wait_for_key()
pg.mixer.music.stop()
self.PlayMusic()
def PlayMusic(self):
now = pg.time.get_ticks()
if now - self.last_update3 > 5000:
self.last_update3 = now
self.tracks = random.randint(1,5)
print("SELFTRACKS!!!", self.tracks)
if self.tracks == 1:
pg.mixer.music.load('1GOODPARTS1.wav')
pg.mixer.music.play(-1)
if self.tracks == 2:
pg.mixer.music.load('2FminorScale.wav')
pg.mixer.music.play(-1)
if self.tracks == 3:
pg.mixer.music.load('3GOODfunnyTRumpdance3.wav')
pg.mixer.music.play(-1)
if self.tracks == 4:
pg.mixer.music.load('4GOODfunnyTrumpdance4.wav')
pg.mixer.music.play(-1)
if self.tracks == 5:
pg.mixer.music.load('5OLDschoolVideogame.wav')
pg.mixer.music.play(-1)
这是一个简单的教程 。 尤其是“歌曲结束时做点什么:”这一段对您来说很有趣。 定义事件类型,调用pg.mixer.music.set_endevent(SONG_END)
然后在事件循环中检查该事件是否在事件队列中,随机挑选一首歌曲并播放。
import sys
import random
import pygame as pg
pg.mixer.pre_init(44100, -16, 2, 2048)
pg.init()
screen = pg.display.set_mode((640, 480))
SONGS = ['song1.wav', 'song2.wav', 'song3.wav']
# Here we create a custom event type (it's just an int).
SONG_END = pg.USEREVENT + 1
# When a song is finished, pygame will add the
# SONG_END event to the event queue.
pg.mixer.music.set_endevent(SONG_END)
# Load and play the first song.
pg.mixer.music.load('song1.wav')
pg.mixer.music.play(0)
def main():
clock = pg.time.Clock()
done = False
while not done:
for event in pg.event.get():
if event.type == pg.QUIT:
done = True
# If the SONG_END event gets emitted, just
# pick a random song and play it.
if event.type == SONG_END:
print('The song ended. Playing random song.')
pg.mixer.music.load(random.choice(SONGS))
pg.mixer.music.play(0)
screen.fill((30, 60, 80))
pg.display.flip()
clock.tick(30)
if __name__ == '__main__':
main()
pg.quit()
sys.exit()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.