[TOC]
# **pygame.mixer.music**
Pygame 中控制音頻流的模塊。
## **函數**
* pygame.mixer.music.load() —— 載入一個音樂文件用于播放
* pygame.mixer.music.play() —— 開始播放音樂流
* pygame.mixer.music.rewind() —— 重新開始播放音樂
* pygame.mixer.music.stop() —— 結束音樂播放
* pygame.mixer.music.pause() —— 暫停音樂播放
* pygame.mixer.music.unpause() —— 恢復音樂播放
* pygame.mixer.music.fadeout() —— 淡出的效果結束音樂播放
* pygame.mixer.music.set\_volume() —— 設置音量
* pygame.mixer.music.get\_volume() —— 獲取音量
* pygame.mixer.music.get\_busy() —— 檢查是否正在播放音樂
* pygame.mixer.music.set\_pos() —— 設置播放的位置
* pygame.mixer.music.get\_pos() —— 獲取播放的位置
* pygame.mixer.music.queue() —— 將一個音樂文件放入隊列中,并排在當前播放的音樂之后
* pygame.mixer.music.set\_endevent() —— 當播放結束時發出一個事件
* pygame.mixer.music.get\_endevent() —— 獲取播放結束時發送的事件
Pygame 中播放音樂的模塊和 pygame.mixer 模塊是密切聯系的。使用音樂模塊去控制在調音器上的音樂播放。
音樂(music)播放和聲音(sound)播放的不同之處在于音樂是流式的,并且絕對不會在一開始就把一個音樂文件全部載入。調音系統在工作剛開始時僅支持單音樂流。
注意:對于 MP3 格式的支持是受限制的。在一些系統上,一種不受支持的格式將會是系統崩潰,例如 Debian Linux。為了游戲的穩定性,建議使用 OGG 進行替代。
## **函數詳解**
### **pygame.mixer.music.load()**
載入一個音樂文件用于播放。
load(filename) -> None
load(object) -> None
該函數將會載入一個音樂文件名或者文件對象,并且準備播放。如果已經有音樂流正在播放,該音樂流將被停止。另外,函數不會開始播放音樂。
### **pygame.mixer.music.play()**
開始播放音樂流。
play(loops=0, start=0.0) -> None
該函數用于播放已載入的音樂流。如果音樂已經開始播放,則將會重新開始播放。
loops 參數控制重復播放的次數,例如 play(5) 意味著被載入的音樂將會立即開始播放 1 次并且再重復 5 次,共 6 次。如果 loops = -1,則表示無限重復播放。
start 參數控制音樂從哪里開始播放。開始的位置取決于音樂的格式。MP3 和 OGG 使用時間表示播放位置(以秒為單位)。MOD使用模式順序編號表示播放位置。如果音樂文件無法設置開始位置,則傳遞了start參數后會產生一個NotImplementedError 錯誤。
### **pygame.mixer.music.rewind()**
重新開始播放音樂。
rewind() -> None
從文件開頭開始重新播放音樂。
### **pygame.mixer.music.stop()**
結束音樂播放。
stop() -> None
如果音樂正在播放則立即結束播放。
### **pygame.mixer.music.pause()**
暫停音樂流的播放。
pause() -> None
通過調用 pygame.mixer.music.unpause() 函數繼續播放音樂。
### **pygame.mixer.music.unpause()**
恢復音樂播放。
unpause() -> None
在播放暫停后使用該函數可以繼續音樂流的播放。
### **pygame.mixer.music.fadeout()**
淡出的效果結束音樂播放。
fadeout(time) -> None
該函數將會在音樂淡出(也就是不在有聲音放出)一段指定長度的時間(以毫秒為單位)后結束播放。
注意:該函數在調用后會一直處于阻塞狀態,直到音樂已經淡出。
### **pygame.mixer.music.set\_volume()**
設置音量。
set\_volume(value) -> None
設置音樂的播放音量。
value 參數值范圍為 0.0~1.0。當新的音樂文件被載入,音量會被重置。
### **pygame.mixer.music.get\_volume()**
獲取音量。
get\_volume() -> value
返回正在播放的音樂的音量(此音量應該是調音器音量,注意與其他音量參數區分)。返回值范圍為 0.0~1.0。
### **pygame.mixer.music.get\_busy()**
檢查是否正在播放音樂。
get\_busy() -> bool
如果有音樂流正在播放,此方法返回 True。否則返回 False。
### **pygame.mixer.music.set\_pos()**
設置播放的位置。
set\_pos(pos) -> None
設置播放的起始位置。pos 參數是一個浮點數(或者一個可以轉換為浮點數的數值),其值取決于音樂文件的格式:
* 對于 MOD 文件,它是模塊中的整型模式號;
* 對于 OGG 文件,它是一個以音頻開頭為零點的絕對時間值(以秒為單位);
* 對于 MP3 文件,它是以當前播放位置為零點的絕對時間值(以秒為單位)。
為了對一個 MP3 文件的進行絕對定位,建議首先調用 rewind() 函數(其他文件格式不受支持)。SDL\_mixer 更新的版本提供了更好的定位支持。如果一種特殊的格式不支持定位,將會產生一個 SDLError 錯誤。
該函數會調用 SDL\_mixer 內的 Mix\_SetMusicPosition() 函數。
### **pygame.mixer.music.get\_pos()**
獲取播放的位置。
get\_pos() -> time
此函數會獲得音樂的播放時長(以毫秒為單數的數值)。返回值僅代表已經音樂已經播放了多久,并不考慮任何起始位置偏移量。
### **pygame.mixer.music.queue()**
將一個音樂文件放入隊列中,并排在當前播放的音樂之后。
queue(filename) -> None
此函數將會載入一個音樂文件并將其放入隊列中。當前的音樂一旦播放完畢,正在排隊的音樂文件就會開始播放。如果當前音樂被人為停止或者切換到其他音樂,則正在排隊的音樂會被丟棄。
下面的示例意思是先播放 6 次 Bach 然后再播放 1 次 Mozart:
~~~
pygame.mixer.music.load('bach.ogg')
pygame.mixer.music.play(5) # Plays six times, not five!
pygame.mixer.music.queue('mozart.ogg')
~~~
### **pygame.mixer.music.set\_endevent()**
當播放結束時發出一個事件。
set\_endevent() -> None
set\_endevent(type) -> None
調用此函數會使 Pygame 在音樂結束播放后發出信號(通過事件隊列)。
type 參數決定了什么樣的事件將被放入事件隊列中。
任何時候音樂結束,都會放入指定事件到隊列中(不僅僅是第一次)。調用該函數并不帶任何參數,表示停止投放事件到隊列中。
### **pygame.mixer.music.get\_endevent()**
獲取播放結束時發送的事件。
get\_endevent() -> type
返回音樂結束時被放入隊列的事件類型。
如果沒有指定 endevent 事件,此方法會返回 pygame.NOEVENT 。
- 一、Python基礎
- 1. 序言
- 1.1 Python簡介
- 1.2 安裝和使用IDE
- 1.3 語言特性和基礎概念
- 2. 基本數據類型
- 2.2 字符串型
- 2.2.2 ASCII簡介
- 2.2.4 字符串常用函數
- 3. 條件分支
- 3.3 閑聊條件判斷和運算符優先級
- 10.正則表達式
- 【降龍十八章】Python小技巧
- 18.1 學習網址
- 18.2 PIP切換源
- 18.3 使用whl來安裝
- 【工具優化】IDE優化技巧
- Anaconda
- Jupyter Notebook 的 Markdown 添加大綱
- Jupyter Notebook中圖片縮放和居左
- Anaconda設置環境變量
- Pycharm
- PyCharm新建文檔配置
- 設置字體和字號
- 設置主題和字體配色
- 保存和導入配置
- 設置對選擇內容自動添加引號
- 推薦安裝的插件
- Markdown
- 表格格式
- 二、Python進階
- copy和deepcopy
- 《零基礎入門學習 Python 》【小甲魚版】
- 001.和Python的第一次接觸+習題復習
- 002.用Python設計的第一個游戲 +習題復習
- Pygame詳解
- Pygame詳解:前言
- Pygame詳解(一):Color類
- Pygame詳解(二):display 模塊
- Pygame詳解(三):draw 模塊
- Pygame詳解(四):event 模塊
- Pygame詳解(五):font 模塊
- Pygame詳解(六):image 模塊
- Pygame詳解(七):key 模塊
- Pygame詳解(八):locals 模塊
- Pygame詳解(九):mixer 模塊
- Pygame詳解(十):mouse 模塊
- Pygame詳解(十一):Rect 對象
- Pygame詳解(十二):Surface 對象
- Pygame詳解(十三):time 模塊
- Pygame詳解(十四):music 模塊
- Pygame詳解(十五):pygame 模塊
- Pygame詳解(十六):cursors 模塊
- Pygame詳解(十七):joystick 模塊
- Pygame詳解(十八):mask 模塊
- Pygame詳解(二十一):BufferProxy 對象
- Pygame詳解(二十三):gfxdraw 模塊
- Pygame詳解(二十五):Overlay 對象
- Pygame詳解(二十八):sndarray 模塊
- Pygame詳解(三十一):camera 模塊
- Pygame詳解(三十二):cdrom 模塊
- Pygame詳解(三十六):version 模塊
- pygame rect相關知識
- Tkinter詳解
- Tkinter 組件詳解(一):Label
- Tkinter 組件詳解(二):Button