2013-06-09 5 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인지 여부에 관계없이 모든 CPU를 소비합니다.

정상적으로 수행하는 방법은 중앙 이벤트 루프 안의 어딘가에 체크를하고 이미지가 교차하는지 여부와 이벤트 루프의 이전 반복에서 교차하는지 여부를 확인하는 것입니다. 이것은 음악을 중지할지 여부를 결정하는 방법입니다.

+0

두 번째로, 코드 스 니펫은 프로그램 논리에 결함이 있음을 보여줍니다. 불행히도 이것은 "볼이 충돌하는 동안 음악 재생"으로 해석하지 않으며 일반적으로 사운드 라이브러리는 음악을 재생하기 위해'Play()'함수를 한 번 호출하면됩니다. 원하는 경우). –

0

while 대신 if을 사용하거나 적어도 재생 기능을 호출하기 전에 음악이 재생되는지 확인하십시오.

관련 문제