条件成真时播放声音

时间:2013-06-09 20:47:54

标签: c++ sdl

我有两个图像,当球图像接触另一个图像时我想要播放声音。这是我的代码:

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

当第一张图像离开第二张图像时,声音仍然会播放。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

您的代码无法运行。你为什么在那里有一个while循环?这只是一遍又一遍地调用Mix_PlayMusic(),无论音乐是否已播放。作为副作用,此循环将消耗所有CPU,无论其条件是否评估为truefalse

通常这样做的方法是在中央事件循环内的某处检查,并检查图像是否相交,以及它们是否在事件循环的前一次迭代中相交。这就是你决定是否开始停止音乐的方式。

答案 1 :(得分:0)

使用if代替while,或至少在调用播放功能之前检查音乐是否正在播放。