python方便地播放、停止音频,不阻塞(arcade)

在python中,如果你想要特别方便地播放音频,就用playsound,但他也只有播放音频这一个功能,不光不能停止,他还会阻塞程序;如果要对音频进行专业处理,可以用pybub之类的专业库,但是这样又略显繁琐。对于初学者来说,在一个程序中播放音频大概率并不是最主要的功能,也没有时间去学习专业库,而使用playsound的话就很令人无语,功能太少了,还阻塞程序。在找了一番后,我找到了一个库:arcade(3.6.7),虽然他是类似于pygame那样开发游戏的,但是好在他并不大,而且能够很方便地播放音频,也有停止功能,具体如下:

1、安装

pip install arcade

可能会有些慢,read time out的话用国内镜像就行了

2、使用

arcade的功能还是比较强大的,其他功能可以看官方文档,这里主要介绍播放音频.

from arcade import load_sound,play_sound,stop_sound

sound=load("1.mp3")
play_sound(sound)

这样子就可以播放音频了,也不会堵塞。

第二行是加载声音文件,mp3、wav等都是可以的

如果想要停止播放,那就要在播放的时候创建一个对象

from arcade import load_sound,play_sound,stop_sound

sound=load("1.mp3")
#开始播放
player=play_sound(sound)
#停止播放
stop_sound(player)

这样就可以了

注意:安装库的时候不要安装最新版!!!

播放音频的时候会报错!!

建议版本:3.6.7

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
Python Arcade中,物理引擎并不直接支持改变重力方向。默认情况下,重力在垂直向下的方向作用于所有物体。 如果你想改变重力方向,你可以通过修改物体的速度向量来实现。可以使用向量运算来设置一个自定义的重力方向。下面是一个简单的示例代码,展示了如何改变重力方向: ```python import arcade SCREEN_WIDTH = 800 SCREEN_HEIGHT = 600 GRAVITY = arcade.PhysicsEngineSimple.GRAVITY class CustomPhysicsEngine(arcade.PhysicsEngineSimple): def __init__(self): super().__init__() def update(self): for body in self.sprite_list: body.change_y += GRAVITY # 在这里改变重力方向 super().update() class MyGame(arcade.Window): def __init__(self): super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Custom Physics Engine Demo") arcade.set_background_color(arcade.color.WHITE) self.physics_engine = None def setup(self): # 初始化物理引擎 self.physics_engine = CustomPhysicsEngine() # 创建一个物体并添加到物理引擎中 self.player = arcade.Sprite(":resources:images/enemies/slimeGreen.png", center_x=SCREEN_WIDTH/2, center_y=SCREEN_HEIGHT/2) self.physics_engine.add_sprite(self.player) def on_draw(self): arcade.start_render() self.player.draw() def on_update(self, delta_time): self.physics_engine.update() def main(): game = MyGame() game.setup() arcade.run() if __name__ == "__main__": main() ``` 在这个示例代码中,我们创建了一个自定义的物理引擎类`CustomPhysicsEngine`,并在其中重写了`update`方法。在这个方法中,我们可以通过修改物体的`change_y`属性来改变重力方向。然后,我们在游戏的`on_update`方法中调用物理引擎的`update`方法来更新物体的位置。 请注意,这只是一个简单的示例,实际应用中可能需要更多的逻辑来处理碰撞、摩擦等物理效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值