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;
}

注意事项

  1. 音乐文件需要放在项目目录或指定路径下
  2. 支持的音乐格式取决于系统安装的解码器,通常支持 mp3、wav 等常见格式
  3. 播放前最好先关闭之前打开的同名音乐,避免冲突
  4. 使用 alias 可以为音乐文件指定别名,方便管理
posted @ 2025-03-28 21:21  f-52Hertz  阅读(164)  评论(0)    收藏  举报