2013-06-09 4 views
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); 
} 

Когда первое изображение покидает второе изображение, звук все еще играет. Как я могу это сделать?

+0

Это не вопрос Xcode. –

ответ

1

Ваш код не может работать. Почему у вас даже есть петля while? Это просто вызовет Mix_PlayMusic() снова и снова, независимо от того, играет ли музыка или нет. В качестве побочного эффекта этот цикл будет потреблять весь ваш процессор, независимо от того, оценивает ли его состояние значение true или false.

Как это обычно делается, нужно проверить чек внутри центрального цикла событий и проверить, пересекаются ли изображения и не пересекаются ли они в предыдущей итерации цикла событий. Вот как вы решаете, начать ли останавливать музыку.

+0

Во-вторых, ваш фрагмент кода показывает, что у вас есть недостаток в вашей программной логике. К сожалению, это не означает «играть музыку, пока шары сталкиваются», и обратите внимание, что обычно звуковым библиотекам нужен только один вызов любой функции «Play()» для воспроизведения музыки (затем один «Stop()», чтобы остановить ее при желании). –

0

Используйте if вместо while или, по крайней мере, проверьте, играет ли музыка перед вызовом функции воспроизведения.

Смежные вопросы