EasyX 图形库音乐操作知识点总结
EasyX 图形库音乐操作知识点总结
今天学习了 EasyX 图形库中与音乐相关的操作,现将知识点整理如下。
1. 基本音乐播放功能
1.1 播放音乐
mciSendString("play 音乐文件名", NULL, 0, NULL);
示例:
mciSendString("play bgm.mp3", NULL, 0, NULL); // 播放bgm.mp3文件
1.2 停止播放
mciSendString("close 音乐文件名", NULL, 0, NULL);
示例:
mciSendString("close bgm.mp3", NULL, 0, NULL); // 停止并关闭bgm.mp3
2. 播放控制
2.1 暂停与继续
// 暂停
mciSendString("pause 音乐文件名", NULL, 0, NULL);
// 继续播放
mciSendString("resume 音乐文件名", NULL, 0, NULL);
2.2 音量控制
// 设置音量(0-1000)
mciSendString("setaudio 音乐文件名 volume to 500", NULL, 0, NULL);
3. 播放模式设置
3.1 循环播放
mciSendString("play 音乐文件名 repeat", NULL, 0, NULL);
3.2 播放指定次数
mciSendString("play 音乐文件名 3", NULL, 0, NULL); // 播放3次
4. 播放状态查询
char status[128];
mciSendString("status 音乐文件名 mode", status, 128, NULL);
if (strcmp(status, "playing") == 0) {
// 正在播放
} else if (strcmp(status, "paused") == 0) {
// 已暂停
} else if (strcmp(status, "stopped") == 0) {
// 已停止
}
5. 实用技巧
5.1 异步播放
默认情况下,play 命令是同步的,程序会等待音乐播放完毕。可以使用 wait 参数:
mciSendString("play bgm.mp3 wait", NULL, 0, NULL); // 同步播放
mciSendString("play bgm.mp3", NULL, 0, NULL); // 异步播放
5.2 从内存播放
EasyX 支持从内存资源中播放音乐:
// 1. 将音乐文件添加到资源文件(.rc)
// 2. 使用以下代码播放
mciSendString("open res/BGM type mpegvideo alias mymusic", NULL, 0, NULL);
mciSendString("play mymusic", NULL, 0, NULL);
6. 完整示例
#include <graphics.h>
#include <mmsystem.h>
#include <conio.h>
#pragma comment(lib, "winmm.lib")
int main() {
initgraph(640, 480);
// 播放背景音乐(循环)
mciSendString("open bgm.mp3 alias bgm", NULL, 0, NULL);
mciSendString("play bgm repeat", NULL, 0, NULL);
// 播放音效(只播放一次)
mciSendString("open effect.wav alias effect", NULL, 0, NULL);
mciSendString("play effect", NULL, 0, NULL);
getch();
// 停止并关闭所有音乐
mciSendString("close bgm", NULL, 0, NULL);
mciSendString("close effect", NULL, 0, NULL);
closegraph();
return 0;
}
注意事项
- 音乐文件需要放在项目目录或指定路径下
- 支持的音乐格式取决于系统安装的解码器,通常支持 mp3、wav 等常见格式
- 播放前最好先关闭之前打开的同名音乐,避免冲突
- 使用
alias可以为音乐文件指定别名,方便管理
浙公网安备 33010602011771号