我正在做一个游戏,你是一个逃避迎面而来的流星的航天飞机,这是我的第一个Python程序,我真的很难与音乐部分斗争:我的想法是只使用wxPython
({{1是禁止的。)
目前,当我点击一个按钮时,我设法让音乐播放,但我再也无法控制太空飞船了。
我不完全了解发生了什么,我一直在寻找没有答案的日子。
pyGame
就我而言,我认为它应该如何运作,但事实并非如此:
class Board(wx.Panel):
BoardWidth = 5
BoardHeight = 12
Speed = 50
ID_TIMER = 1
def __init__(self,parent):
wx.Panel.__init__(self,parent)
self.timer = wx.Timer(self, Board.ID_TIMER)
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
self.Bind(wx.EVT_TIMER, self.OnTimer, id=Board.ID_TIMER)
self.ClearBoard()
self.music = wx.Panel(self)
button = wx.Button(self, label="Play")
self.music=wx.media.MediaCtrl(self.music, -1, "game.mp3")
button.Bind(wx.EVT_BUTTON, self.play)
def play(self,event):
self.music.Play()
答案 0 :(得分:2)
您可以使用线程播放音乐。现在你的画面在等待音乐完成时会冻结,这当然不会发生,因为它是背景音乐
有一个奇怪的错误,从未生成事件。要解决此问题,请添加szBackend=wx.media.MEDIABACKEND_WMP10
(请参阅下面的代码)
尝试:
import threading
#...
self.music=wx.media.MediaCtrl(self.music, -1, "game.mp3",
szBackend=wx.media.MEDIABACKEND_WMP10)
#...
def play(self, event):
threading.Thread(target=self.music.Play).start()
或者,您可以使用计时器等待加载文件:
def __init__(self, parent):
#...
self.play()
def play(self):
threading.Timer(0.5, self.music.Play).start()