pygame 的聲音播放

来源:https://www.cnblogs.com/liquancai/archive/2020/07/04/13236974.html
-Advertisement-
Play Games

pygame 的聲音播放 1. sound 對象 在初始化聲音設備後就可以讀取一個音樂文件到一個 Sound 對象中。pygame.mixer.sound() 接收一個文件名,也可以是一個文件對象,不過這個文件對象必須是 WAV 或者 OGG 文件。 hello_sound = pygame.mix ...


pygame 的聲音播放

1. sound 對象

在初始化聲音設備後就可以讀取一個音樂文件到一個 Sound 對象中。pygame.mixer.sound() 接收一個文件名,也可以是一個文件對象,不過這個文件對象必須是 WAV 或者 OGG 文件。

hello_sound = pygame.mixer.sound("hello.ogg")		# 建立 Sound 對象
hello_sound.play()					# 聲音播放一次

一旦這個 Sound 對象出來了,就可以使用 play() 來播放它。play(loop, maxtime) 可以接收兩個參數,loop 是重覆的次數(取1是兩次,註意是重覆的次數,而不是播放的次數),-1 意味著無限迴圈;maxtime 是指多少毫秒後結束。

若不使用任何參數調用,意味著把這個聲音播放一次。一旦 play() 方法調用成功,就會返回一個 Channel 對象,否則返回一個 None。


2. music 對象

pygame 中還提供了 pygame.mixer.music 類來控制背景音樂的播放。pygame.mixer.music 用來播放 MP3 和 OGG 文件,不過 MP3 並不是所有的系統都支持(Linux 預設就不支持 MP3 播放)。用戶可以用 pygame.mixer.music.load() 載入一個文件,然後使用 pygame.mixer.music.play() 播放,不放的時候就用 stop() 方法停止,當然也有類似錄影機上的 pause() 和 unpause() 方法。

# 載入背景音樂
pygame.mixer.music.load("hello.mp3")
pygame.mixer.music.set_volume(music_volume / 100.0)
# 迴圈播放,從音樂的第30秒開始
pygame.mixer.music.play(-1, 30.0)

在游戲退出事件中加入停止音樂播放的代碼:

# 停止音樂播放
pygame.mixer.music.stop()

music 對象提供了豐富的函數方法,下麵分別介紹:

  1. pygame.mixer.music.load()

    功能:載入音樂文件

    格式:pygame.mixer.music.load(filename)

  2. pygame.mixer.music.play()

    功能:播放音樂

    格式:pygame.mixer.music.play(loops = 0, start = 0.0)

    其中 loops 表示迴圈次數,如果設置為 -1 ,表示不停的迴圈播放,如果 loops 為 5 ,則播放 5+1=6 次;start 表示從音樂文件的哪一秒開始播放,設置為 0 表示從開始完整播放。

  3. pygame.mixer.music.rewind()

    功能:重新播放

    格式:pygame.mixer.music.rewind()

  4. pygame.mixer.music.stop()

    功能:停止播放

    格式:pygame.mixer.music.stop()

  5. pygame.mixer.music.pause()

    功能:暫停播放

    格式:pygame.mixer.music.pause()

    用戶可以通過 pygame.mixer.music.unpause() 恢復播放。

  6. pygame.mixer.music.set_volume()

    功能:設置音量

    格式:pygame.mixer.music.set_volume(value)

    其中 value 的取值為 0.0 ~ 1.0 。

  7. pyagme.mixer.music.get_pos()

    功能:獲取當前播放了多長時間

    格式:pygame.mixer.music.get_pos()

    返回值為 time 。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 文章設計源代碼和筆記:gitee 一、Mybatis-Plus 簡介 MyBatis-Plus(簡稱 MP)是一個 MyBatis 的增強工具,在 MyBatis 的基礎上只做增強不做改變,為簡化開發、提高效率而生。 我們的願景是成為 MyBatis 最好的搭檔,就像 魂鬥羅 中的 1P、2P,基友 ...
  • 項目描述 Hi,大家好,今天分享的項目是《個人家庭財務管理系統》,本系統是針對個人家庭內部的財務管理而開發的,大體功能模塊如下: 系統管理模塊 驗證用戶登錄功能:該功能主要是驗證用戶登錄時登錄名和密碼的正確性。 退出系統功能:註銷當前登錄的用戶。 家庭成員管理模塊 家庭成員管理功能:主要實現了對家庭 ...
  • import pandas from docx import Document excel=pandas.read_excel(r'F:\word練習\數據.xlsx',header=None) 文件=Document(r'F:\word練習\a.docx') 表=文件.add_table(4,4) ...
  • from docx import Document from docx import WD_PARAGRAPH_ALIGNMENT w=Documeent(r'F:\word練習\a.docx') #第一種方法 t=w.add_table(3,3) t.cell(0,0).text='李先生' #第 ...
  • 線程與進程相似,但線程是一個比進程更小的執行單位。一個進程在其執行的過程中可以產生多個線程。與進程不同的是同類的多個線程共用同一塊記憶體空間和一組系統資源,所以系統在產生一個線程,或是在各個線程之間作切換工作時,負擔要比進程小得多,也正因為如此,線程也被稱為輕量級進程。 程式是含有指令和數據的文件,被 ...
  • from docx import Document w=Document(r'F:\word練習\表格.docx') #刪除表 print(len(w.tables)) t=w.tables[0] t._element.getparent().remove(t._element) print(len ...
  • from docx import Document w=Document(r'F:\word練習\表格.docx') table_1=w.tables[0] #刪除行 print(len(table_1.rows)) row2=table_1.rows[1] row2._element.getpar ...
  • 值傳遞和引用傳遞: 值傳遞和引用傳遞的區別並不是傳遞的內容。而是實參到底有沒有被覆制一份給形參。在判斷實參內容有沒有受影響的時候,要看傳的的是什麼,如果你傳遞的是個地址,那麼就看這個地址的變化會不會有影響,而不是看地址指向的對象的變化。 Java中當傳遞的參數是對象時,其實還是值傳遞的,只不過對於對 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...