使用 mixer_music 模組控製背景音樂
閱讀 2:27·字數 738·發佈
Youtube 頻道
訂閱 375
訂閱 375
Pygame 背景音樂的播放、迴圈、音量控製影片示範 YouTube
前言
Pygame 的混音系統分為兩個主要部分:音效和背景音樂。與可以同時播放多個音效不同,Pygame 在同一時間內僅支援播放一個背景音樂,音樂資料采用串流傳輸。
初始化 mixer_music 模組
要在遊戲中處理背景音樂,需要使用 Pygame 的mixer_music
模組,該模組相依於mixer
模組的初始化。
import pygame
from pygame import mixer
from pygame import mixer_music
# 初始化混音器系統
pygame.mixer.init()
載入音樂檔案
mixer_music
模組提供了load
函式用於載入音樂。載入音樂不會自動開始播放,如果已有音樂正在播放,載入新音樂會停止目前播放。
load(filename, namehint='')
- filename 參數
音訊檔案路徑或包含音訊資料的
IO
物件。- namehint 參數
當使用
IO
物件時,指定音訊格式,如ogg
。
# 載入音樂檔案
pygame.mixer.music.load('sea.mp3')
播放控製
mixer_music
模組提供了一系列控製函式。
play(loops=0, start=0.0, fade_ms=0)
- loops 參數
預設值
0
或設定為1
,表示播放一次,設定為-1
,表示無限迴圈播放。
# 播放音樂(迴圈參數設定為 -1,表示無限迴圈)
pygame.mixer.music.play(loops=-1)
# 停止播放
pygame.mixer.music.stop()
# 暫停播放
pygame.mixer.music.pause()
# 恢復播放
pygame.mixer.music.unpause()
# 重新開始播放
pygame.mixer.music.rewind()
音量控製
mixer_music
模組提供了控製音量的函式get_volume
和set_volume
。
set_volume(volume)
- volume 參數
小於
0
,音量不變;大於1
,等同於設定為1
(最大音量)。
# 取得目前音量(0.0 到 1.0之間)
current_volume = pygame.mixer.music.get_volume()
# 設定音量(0.0 靜音,1.0 最大音量)
pygame.mixer.music.set_volume(0.5) # 設定為 50% 音量
完整範例
import pygame
from pygame.locals import *
# 初始化
pygame.init()
pygame.mixer.init()
screen = pygame.display.set_mode((400, 300))
pygame.display.set_caption("音樂控製範例")
# 載入音樂
pygame.mixer.music.load('sea.mp3')
pygame.mixer.music.play(loops=-1) # 無限迴圈播放
running = True
while running:
for event in pygame.event.get():
if event.type == QUIT:
running = False
# 滑鼠控製
if event.type == MOUSEBUTTONDOWN:
if event.button == 1: # 左鍵暫停
pygame.mixer.music.pause()
elif event.button == 3: # 右鍵恢復
pygame.mixer.music.unpause()
elif event.button == 2: # 滾輪靜音
pygame.mixer.music.set_volume(0)
pygame.display.flip()
pygame.quit()