上海婚恋网站排名,潍坊网络营销,温州平面设计公司,表情包在线制作一键生成1.帧率#xff1a;
即每秒钟界面刷新次数#xff0c;下面以60帧为例#xff1a;
1.数据类型 clock_t#xff1a;
用来保存时间的数据类型。
2.clock( ) 函数#xff1a;
用于返回程序运行的时间,无需参数。
3.例子#xff1a;
先定义所需帧率#xff1a;
const …1.帧率
即每秒钟界面刷新次数下面以60帧为例
1.数据类型 clock_t
用来保存时间的数据类型。
2.clock( ) 函数
用于返回程序运行的时间,无需参数。
3.例子
先定义所需帧率
const clock_t FPS 1000 / 60;
然后定义两个变量用于表示一次循环运行前后的时间再用Sleep函数休眠即可。 while (true){startTime clock();//balabalafreamTime clock() - startTime;if (freamTime FPS){Sleep(FPS - freamTime);}}
2.图片的加载和输出
1.定义图片变量
数据类型IMAGE保存图片的数据类型。
2.加载图片
1.loadimage函数:
将图片放到图片变量中。
loadimage(图片变量 , 图片地址图片宽度图片高度);
2.图片地址
1绝对路径
复制图片地址 --- 将所有 / 变为 // 防止转义
注如果图片格式不对打开画图拖进去后再另存为选择 jpg 格式即可。
2相对路径推荐通用性好
只要图片所在文件与 vs main.cpp 在一个路径下即可直接 “所在文件夹 \\ 图片名”。
3.输出图片
putimagex , y , 图片变量;
4.透明贴图
1先绘制掩码图
2在putimage函数中添加参数
掩码图为NOTSRCERASE原图为SRCERASE。
3将原图和掩码图输出到同一位置
例 //透明图贴图IMAGE img_plane[2];loadimage(img_plane, assets\\plane_mask.jpg);loadimage(img_plane 1, assets\\plane.jpg);putimage(50, 50, img_plane, NOTSRCERASE);putimage(50, 50, img_plane1, SRCERASE);
5.精灵表动画
首先需要一张包含全部动画帧的图片 然后设置切帧的参数 int imgSize 32;//每帧的尺寸int frames 7;//总共有多少帧int speed 200;//多少毫秒切换一张int index 0;//贴哪一张图
putimage函数有重载版本
void putimage(int dstX, int dstY, int dstWidth, int dstHeight,
const IMAGE *pSrcImg, int scrX, int scrY)
其中srcX和srcY是图片中坐标表示你要剪切的图片的左上角坐标。
综上即可实现动画 index (clock() / speed) % frames;putimage(250, 250, imgSize, imgSize, img_sheet, index * imgSize, 0);
3.播放音乐
1.头文件
首先需要包含头文件
#includestdio.h
#includeWindows.h
#includemmsystem.h
#pragma comment(lib,winmm.lib)
2.播放
使用 mciSendString 函数多媒体控制函数
我们只需要改变第一个参数其他置为0或NULL即可
先open音频路径再play音频路径 mciSendString(open assets/That-Girl.mp3, NULL, 0, NULL);mciSendString(play assets/That-Girl.mp3, NULL, 0, NULL);
3.音频地址起别名
音频可以用 alias 关键字起别名加在音频路径的后面 mciSendString(open assets/That-Girl.mp3 alias bgm, NULL, 0, NULL);mciSendString(play bgm, NULL, 0, NULL);
如上面bgm就是别名。
注如果同时播放两个音乐不能用同样的别名。
4.调整音量
将第一个参数改为
setaudio 音频地址 volume to 音量范围0-1000
mciSendString(setaudio bgm volume to 100, NULL, 0, NULL);
5.如果mciSendString调整失败如何查看错误
mciSendString函数有一个返回值返回MCIERROR类型成功返回零失败返回非0。
mciGetErrorString函数可将错误信息放进一个字符数组里。 MCIERROR ret mciSendString(setaudio bgm volume 100, NULL, 0, NULL);if (ret ! 0){char err[100] { 0 };mciGetErrorString(ret, err, sizeof(err));//获取错误信息puts(err);//打印错误信息}
6.循环播放
正常播放只播放一次如果想循环播放
在 play 的后面加一个 repeat注对音乐格式有要求
mciSendString(play bgm repeat, NULL, 0, NULL);
7.封装音乐播放函数
void playBackgroundMusic(const char* music,bool isrepeat false,int volume -1)
{static int i 0;//防止使用同一别名char cmd[100] { 0 };sprintf(cmd, open %s alias bgm%d, music,i);MCIERROR ret mciSendString(cmd, NULL, 0, NULL);if (ret ! 0){char err[100] { 0 };mciGetErrorString(ret, err, sizeof(err));//获取错误信息printf(open : %s, err);//打印错误信息return;}sprintf(cmd, play bgm%d %s,i,isrepeat?repeat:);//判断是否循环播放ret mciSendString(cmd, NULL, 0, NULL);if (ret ! 0){char err[100] { 0 };mciGetErrorString(ret, err, sizeof(err));//获取错误信息printf(play : %s, err);//打印错误信息return;}if (volume ! -1)//修改音量{sprintf(cmd, setaudio bgm%d volume to %d, i, volume);ret mciSendString(cmd, NULL, 0, NULL);if (ret ! 0){char err[100] { 0 };mciGetErrorString(ret, err, sizeof(err));//获取错误信息printf(setaudio : %s, err);//打印错误信息return;}}i;
}