2014-07-20 6 views
0

사용자가 클릭 할 때마다 호출되어 화면이 변경되면 음악을 시작할 함수가 있습니다. 지금 당장의 유일한 문제는 그것이 멈추지 않는다는 것입니다. 나는 이것이 clip = AudioSystem.getClip(); 현재 재생중인 클립을 반환하지 않을 때마다 매번 임의의 위치를 ​​반환합니다. 클립이 현재 재생중인 클립의 값을 가져 와서 멈추게하려면 어떻게해야합니까?오디오 - 클립이 멈추지 않습니다

은 "StartBGMusic"기능

public void startBGMusic() throws LineUnavailableException, IOException 
    { 
     clip = AudioSystem.getClip(); 
     System.out.println(clip); 
     try 
     { 
      if(SCREEN_CHECK != Screen) 
      { 
       clip.stop(); 

       clip.close(); 

       if(Screen != 14 && Screen != 19 && Screen != 16 && Screen != 15 && Screen != 17) 
       { 
        clip.open(AudioSystem.getAudioInputStream(getClass().getResource("UpbeatFunk.wav"))); 
        clip.loop(99999); 
       } 
       else 
       { 
        clip.open(AudioSystem.getAudioInputStream(getClass().getResource("Background Music.mid"))); 
        clip.loop(99999); 
       } 
      } 

      SCREEN_CHECK = Screen; 
     }catch (Exception e) 
     { 
      e.printStackTrace(System.out); 
     } 
    } 
+0

JavaScript는 자바와 매우 유사하므로이 비디오 시리즈를 사용하여 알아낼 수 있습니다. http : // www .developphp.com/list_javascript_video.php # Audio_Workshop –

+1

@IGotRoot "그들"은 누구입니까? [관련 질문] (0120-13753) –

+0

: 자바를 배울 수 있다면 자바 스크립트를 배울 수 있다고 말하는 프로그래머에서부터 . –

답변

1

According to oracle documentation, getClip() 현재의 재생 사운드를 반환하지 않고, 사용할 수있는 클립 객체는 오디오 파일을 재생할 수 있습니다.

오디오 파일을 시작하는 데 사용한 클립에 대한 참조를 전달해야합니다. 반환하거나 인수로 전달하거나 전역 변수/getter 메서드를 사용하여 수행 할 수 있습니다.

+0

고마워! 클립이 다른 사운드 파일로 바뀌면 왜 잠시 멈추는 걸까요? – user3672378

+0

다음 파일을로드하기 전에 음악을 중지 했으므로 약간 지연이 있습니다. 이것은 이미 올바른 파일이로드 된 두 개의 클립 객체를 번갈아 가며 피할 수 있습니다 (깔끔하지 만 빠른 노래 변경이 아님) – Matt

+0

고마워요! 슈퍼 도움이! – user3672378

관련 문제