2016-12-21 1 views
1
import pygame,sys 

pygame.init() 

size = 40,40 
screen = pygame.display.set_mode(size) 

LEFT = 1 

s = pygame.mixer.Sound("Sound.wav") 

while True: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      pygame.quit() 
      sys.exit() 
     elif event.type == pygame.MOUSEBUTTONDOWN: 
      if event.button == LEFT: 
       s.play() 

그래서 현재 파이 게임을 사용하여 게임을 만들려고합니다. 마우스를 클릭 할 때마다 사운드가 재생되도록 설정했습니다. 그것은 모두 작동하지만, 나는 한 번에 하나의 사운드 효과 만들을 수 있기 때문에 정말로 짜증납니다. 매우 빠르게 7 번 클릭하면 4-6 소리 만들을 수 있습니다. 매우 빠르게 2 번 클릭하면 소리가 한 번 들립니다.어떤 식 으로든 파이썬 소리가 겹칠 수 있습니다.

필자는 파이 게임 사운드가 겹치는 것에 대해 여러 가지 다른 질문을했습니다 (필자가 이해하지 못하는 pygame.mixer.Channel과 관련이 있습니다). 지금까지 아무 것도 저에게 효과가 없었습니다. 어떤 아이디어?

답변

0

조금 놀아서, 나는 당신이 바로 pygame.mixer.Channel을 사용하고 있다고 생각한다. pygame.mixerpygame.mixer.Channel 페이지를 살펴 보는 것이 좋습니다. 내가 생각할 수있는 가장 간단한 접근법은 파이 게임 (pygame)에서 빈 채널이 있는지 확인하는 것입니다 (기본적으로 8 개 채널을 사용할 수 있으며 pygame.mixer.set_num_channels()을 사용하면 더 많은 채널을 만들 수 있습니다). 사용할 수있는 빈 채널이있는 경우 대신 사운드를 재생하는 대신 채널을 사용할 수 있습니다. 이 두 가지 조작을 통해 샘플이 다음과 같이됩니다.

import pygame 
import sys 

pygame.init() 
size = (200, 200) 
screen = pygame.display.set_mode(size) 
LEFT = 1 
s = pygame.mixer.Sound("Sound.wav") 

while True: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      pygame.quit() 
      sys.exit() 
     elif event.type == pygame.MOUSEBUTTONDOWN: 
      if event.button == LEFT: 
       print "click" 
       empty_channel = pygame.mixer.find_channel() 
       empty_channel.play(s) 

도움이 될지 알려주세요.

+0

적용했을 때 아무런 차이가없는 것처럼 보였습니다. 나는 여전히 소리보다 적은 클릭 소리를 들었다. 나는 지금 그것을 지킬 것 같아. 그래도 응답 주셔서 감사합니다. –

+0

@ShawnSong 더 긴 테스트 사운드를 사용하여 오버랩 소리를 더 잘 들으려고 했습니까? 또한 앱을 처음로드 할 때 즉시 빠르게 클릭하기 시작하면 사운드가 누락되므로 몇 초 기다렸다가 급속하게 클릭하면 변경 사항이 표시되는지 확인했습니다. 또한'pygame.mixer.get_num_channels()'을 검사하여 이것이 실제로 8인지 확인하는 것은 아쉽지 않을 수 있습니다. – CodeSurgeon

+0

아마도 내가 사용하고있는 버전일까요? (Python 3.3)? pygame.mixer.find_channel()이 온라인에서 다른 사람들을 위해 일하는 것을 보았습니다. 그러나 저에게는 그렇지 않았습니다. pygame.mixer.get_num_channels()는 8을 반환합니다. 벌써 해봤 어. –

관련 문제