0

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

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

当第一张图像离开第二张图像时,声音仍在播放。我怎样才能做到这一点?

4

2 回答 2

1

你的代码不可能工作。为什么你甚至在while那里有一个循环?这只是一遍又一遍地调用 Mix_PlayMusic(),不管音乐是否已经在播放。作为一个副作用,这个循环将消耗你所有的 CPU,不管它的条件是true还是false

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

于 2013-06-09T21:26:29.427 回答
0

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

于 2013-06-10T11:32:13.927 回答