我有两个图像,当球图像接触另一个图像时我想要播放声音。这是我的代码:
while (((dstX + 31) > wallRect.x) && ((dstX + 31) < (wallRect.x+30)) && (dstY < (wallRect.y + wallRect.h)) && ((dstY + 31) > wallRect.y)) //31 = ball dimension.
{
Mix_PlayMusic(soundEffect, -1);
}
当第一张图像离开第二张图像时,声音仍然会播放。我怎么能这样做?
答案 0 :(得分:1)
您的代码无法运行。你为什么在那里有一个while
循环?这只是一遍又一遍地调用Mix_PlayMusic(),无论音乐是否已播放。作为副作用,此循环将消耗所有CPU,无论其条件是否评估为true
或false
。
通常这样做的方法是在中央事件循环内的某处检查,并检查图像是否相交,以及它们是否在事件循环的前一次迭代中相交。这就是你决定是否开始停止音乐的方式。
答案 1 :(得分:0)
使用if
代替while
,或至少在调用播放功能之前检查音乐是否正在播放。