(Python3)- PyGame 基本參數學習-2 (*聲音控制*)

(Python3)- PyGame 基本參數學習-2 (*聲音控制*)

(Python3)- PyGame 基本參數學習-2 (*聲音控制*)  

 

 

pygame.mixer是一個用來處理聲音的模組,其含義為“混音器”。遊戲中對聲音的處理一般包括製造聲音和播放聲音兩部分,這裡僅學習了播放聲音部分。

 

1、pygame.mixer啟動與初始化

pygame.mixer.init():mixer的初始化。程式中使用時,一般放在最前面的幾句程式碼中:

程式碼如下:

 

import pygame
pygame.init()
pygame.mixer.init()

 

2、播放聲音片段wav檔案
播放聲音片段 wav 檔案時,pygame.mixer 使用 Sound 物件:

程式碼如下:


soundwav=pygame.mixer.Sound (“filename.wav”) #filename.wav檔名
soundwav.play()

 

在遊戲中,往往用下面的程式碼來完成:

程式碼如下:


import pygame,sys
pygame.init()
pygame.mixer.init()
screen=pygame.display.set_mode ([640,480])
pygame.time.delay(1000) #等待1秒讓mixer完成初始化
soundwav=pygame.mixer.Sound (“filename.wav”)
soundwav.play()
while 1:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            sys.exit()

 

3、播放mp3、wma、ogg音樂檔案
這裡只是學習了一個mp3檔案,如果非windows系統,那可以試試ogg檔案。播放音樂檔案主要使用pygame.mixer中的music模組:

程式碼如下:


pygame.mixer.music.load (“filename.mp3”)
pygame.mixer.music.play (n,start,stop)

#第一個引數為播放次數,如果是-1表示迴圈播放,省略表示只播放1次。第二個引數和第三個引數分別表示播放的起始和結束位置。

 

完整的程式碼為:


import pygame,sys
pygame.init()
pygame.mixer.init()
screen=pygame.display.set_mode ([640,480])
pygame.time.delay(1000)
pygame.mixer.music.load (“filename.mp3”)
pygame.mixer.music.play()
while 1:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            sys.exit()

程式在執行時,一旦開始播放音樂,就會繼續做下一件事情,也就是說,如果我們要播放兩首歌,那麼程式碼如下:


pygame.mixer.music.load (“filename1.mp3”)
pygame.mixer.music.play()
pygame.mixer.music.load (“filename2.mp3”)
pygame.mixer.music.play()

 

這段程式碼執行後,就會出現兩首歌同時在播放的情況。實際中,我們常常需要播放完一首,再播放另一首,這樣就需要利用pygame.mixer.music.get_busy()函式來判斷,如果函式返回值為True那麼說明目前處於忙的狀態,否則返回 False。

完整的程式碼如下:


import pygame,sys
pygame.init()
pygame.mixer.init()
screen=pygame.display.set_mode ([640,480])
pygame.time.delay(1000)
pygame.mixer.music.load (“filename.mp3”)
pygame.mixer.music.play()
soundwav=pygame.mixer.Sound (“filename.wav”)
while 1:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            sys.exit()
    if not pygame.mixer.music.get_busy():
        soundwav.play()
        pygame.time.delay(5000) #等待5秒讓filename.wav播放結束
        sys.exit()

 

4、控制音量

 

pygame.mixer.music.set_volume()

#用來控制音量,取值範圍為0-1.0的浮點數。0為最小值,1為最大值。

 

5、mp3播放器

 

import time
import pygame
file=r'430220.mp3'
pygame.mixer.init()
print("播放音樂1")
track = pygame.mixer.music.load(file)
pygame.mixer.music.play()
time.sleep(10)
pygame.mixer.music.stop()

 

功能:播放音樂10秒後停止

附錄

pygame.init() 進行全部模組的初始化,
pygame.mixer.init() 或者只初始化音訊部分
pygame.mixer.music.load(‘xx.mp3’) 使用檔名作為引數載入音樂 ,音樂可以是ogg、mp3等格式。載入的音樂不會全部放到內容中,而是以流的形式播放的,即在播放的時候才會一點點從檔案中讀取。
pygame.mixer.music.play()播放載入的音樂。該函式立即返回,音樂播放在後臺進行。
play方法還可以使用兩個引數
pygame.mixer.music.play(loops=0, start=0.0) loops和start分別代表重複的次數和開始播放的位置。
pygame.mixer.music.stop() 停止播放。
pygame.mixer.music.pause() 暫停播放。
pygame.mixer.music.unpause() 取消暫停。
pygame.mixer.music.fadeout(time) 用來進行淡出,在time毫秒的時間內音量由初始值漸變為0,最後停止播放。
pygame.mixer.music.set_volume(value) 來設定播放的音量,音量value的範圍為0.0到1.0。
pygame.mixer.music.get_busy() 判斷是否在播放音樂,返回1為正在播放。
pygame.mixer.music.set_endevent (pygame.USEREVENT 1) 在音樂播放完成時,用事件的方式通知使用者程式,設定當音樂播放完成時傳送 pygame.USEREVENT 1 事件給使用者程式。
pygame.mixer.music.queue(filename) 使用指定下一個要播放的音樂檔案,當前的音樂播放完成後自動開始播放指定的下一個。一次只能指定一個等待播放的音樂檔案。

 

 

 

 

免責聲明:

1.本影像檔案皆從網上搜集轉載,不承擔任何技術及版權問題。

2.如有下載連結僅供寬頻測試研究用途,請下載後在24小時內刪除,請勿用於商業。

3.若侵犯了您的合法權益,請來信通知我們,我們會及時刪除,給您帶來的不便,深表歉意。



發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *