zoukankan      html  css  js  c++  java
  • pygame 的声音播放

    转载注明链接:https://www.cnblogs.com/liquancai/p/13236974.html

    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 。

  • 相关阅读:
    Redis持久化
    Redis进阶——事务、TTL、排序、消息通知、管道
    行为设计模式
    Redis数据类型
    ASP.NET并发处理
    c# 泛型有什么作用?
    IBatisNet 升级到 .Net Framework 4.0 时发现 IBatisNet 一小BUG
    【Python3】用for循环和while循环分别打印出如下格式“九九乘法表”
    Visual Studio 2010 SP1 WPF程序属性重命名BUG,小心!
    为什么用SOA架构?
  • 原文地址:https://www.cnblogs.com/liquancai/p/13236974.html
Copyright © 2011-2022 走看看