2014-06-19 7 views
1

저는 Eclipse와 libgdx를 사용하여 간단한 게임을 개발 중입니다. 현재 내 게임의 음향 효과에 '소리'대신 '음악'을 사용하고 있습니다. 나는 모든 사운드 fx를 뮤트하기위한 버튼을 만들었지 만, 음악 대신에 '사운드'에 관해서는 문제가있다.libgdx에서 'Music'대신 'Sound'를 음소거합니다.

여기에 내 현재 코드입니다 :

public static Music jump; 

public static void load() { 
jump = Gdx.audio.newMusic(Gdx.files.internal("data/jump.wav")); 
} 

public static void muteFX() { 
lesgo.setVolume(0); 

public static void normalizeFX() { 
jump.setVolume(1f); 


//'muteFX' and 'normalizeFX' to be called on different class 

나는 '소리'로 변경을 원했습니다 (이유는 내가 그것을 빨리 클릭에 대한 반응 할 싶어한다) 그래서 이렇게 될 수 있습니다 :

public static Sound jump; 

public static void load() { 
jump = Gdx.audio.newSound(Gdx.files.internal("data/jump.wav")); 
} 

/* here comes my problem, didn't know how to set mute and normal 
volume for the jump sound. I know there is also a set volume method 
to 'Sound' but really confused on the terms (long soundID, float volume) 
Can someone make this clear to me on how to implement the long and soundID? 
*/ 

저는 자바뿐만 아니라 libgdx도 새로 도입되었습니다. 나는 이것에 관한 많은 포럼을 연구했지만 여전히 더 명확한 설명을 찾을 수 없다. 도움이 될 것입니다.

미리 감사드립니다. =)

답변

3

가 빠른 제안

public static VOLUME = 1.0f; 

사운드 API를 사용하면 특정 볼륨에서 소리를 재생할 수 있습니다 사운드 전역 변수를 사용하는 것입니다, 그래서 당신은 무엇을 할 수 있는지의 모든 소리를 가지고있다 귀하의 게임은 필요할 때 글로벌 가치로 플레이합니다.

jump.play(VOLUME); 

이렇게하면 모든 스위치는 볼륨의 float 값을 변경합니다.

public static void muteFX(){ 
    VOLUME = 0.0f; 
} 
public static void normalizeFX(){ 
    VOLUME = 1.0f; 
} 

음악 제약으로 인해 음향 효과에 Music 클래스를 사용하지 않는 것이 가장 좋습니다.

나는이 그것을 재생() 또는 루프() 메소드가 성공하면 ID가 반환됩니다 내용의 문서에서

+0

안녕하세요, 답변을 많이 주셔서 감사하지만,이 하나를 시도하지만 왜 내가 muteFX() 메서드를 실행/눌러도 사운드를 음소거 할 수 없는지 궁금합니다. 여전히 "VOLUME = 1.0f"를 사용하면 재생할 때 호출됩니다. 내 소리는 루프가 아닌 사운드 효과 (1 초 지속 시간)입니다. – jajuatco

+0

VOLUME에서 전달중인 재생을 호출 할 때 오른쪽? sound.play (볼륨)? Gdx.app.log ("APP", "My Volume :"+ VOLUME); 런타임 중에 VOLUME을 로깅 해보십시오. – compulsivestudios

+0

지금 제 문제를 해결했습니다! 나는이 대답으로 많은 것을 배웠다. 정말 고마워! 볼륨에 대한 내 코드의 문제점은 런타임 중에 기록되지 않는다는 것입니다.내 런타임 게임 클래스에서 볼륨을 'VOLUME = 0.0f'로 반환하여 해결 된 음소거 단추에 볼륨을 선언했습니다. 고마워요! =) – jajuatco

1

도움이되기를 바랍니다. 달성하려는 목표에 따라 이것은 편리하지 않을 수 있습니다. Basicly 당신은 ID를 얻을이 비슷한 그것을 사용할 수 있습니다 : 나는 소리 somethign 비슷한을 재생하기 전에 내가 체크하는 전역 변수를했다 ON 나는 버튼 볼륨 OFF 및 볼륨을하고 싶었

long id = sound.play(1.0f); // play new sound and keep handle for further manipulation 
sound.stop(id);    // stops the sound instance immediately 
sound.setPitch(id, 2);  // increases the pitch to 2x the original pitch 

여기에 내 주요 게임 클래스에서

:

public static boolean soundEnabled; 

는 때마다 나는 사운드를 재생하고 싶었다.

다른 사운드 컨트롤을 원할 경우, 분명히 사운드 ID를 알아야합니다.

+0

soundID와 long에 대한 명확한 설명에 감사드립니다. 네 말이 맞아, 내 사건에 사용하는 것이 편리하지 않을거야. 전역 변수를 사용했고 이제는 모두 작동합니다. 고마워요! – jajuatco