2014-06-18 4 views
1

나는 게임을 만들고 있으며, 플레이어에게 모든 사운드를 소거 할 수있는 기회를 제공하고자합니다.Gamedesign "group"html5 음소거 및 음소거 해제를위한 오디오 요소

나는 다음과 같은 내 audiofiles 전화 :

function startButtonClickHandler(event){ 
    GAMEPLAY.play(); 
} 

가 나는 모든 소리를 음소거 기능을 발견 :이 같은 예를 들어, 오디오를 호출 할 때

var STARTSCREEN  = new Audio('sounds/soundtrack-idle-24s.wav'); 
var GAMEPLAY  = new Audio('sounds/soundtrack-active-24s.wav'); 
var FX_BREAK  = new Audio('sounds/effect-break.wav'); 
var FX_BUBBLE  = new Audio('sounds/effect-bubble.wav'); 
var FX_EXPLOSION = new Audio('sounds/effect-explosion.wav'); 

이 잘 작동 버튼

muteButton = document.getElementById('mute-button'); 

function muteButtonClickHandler(event) { 
    audio.muted = !audio.muted; 
    event.preventDefault(); 
} 

그럼 모든 오디오를 그룹화해야합니다. varaudio이라고합니다.

하지만 난이 다음을 수행하는 경우, 모든 일 나누기 ('catch되지 않은 형식 오류 : 속성을 읽을 수 없습니다' '정의의'플레이) :

var audio = { 
    STARTSCREEN  = new Audio('sounds/soundtrack-idle-24s.wav'); 
    GAMEPLAY  = new Audio('sounds/soundtrack-active-24s.wav'); 
    FX_BREAK  = new Audio('sounds/effect-break.wav'); 
    FX_BUBBLE  = new Audio('sounds/effect-bubble.wav'); 
    FX_EXPLOSION = new Audio('sounds/effect-explosion.wav'); 
} 

어떻게 내 전화 변경합니까? 이 같은 될 것입니다 :

audio.GAMEPLAY.play(); 

답변

0

당신이 오디오와 객체를 생성 할 경우 :

이제
var audio = { 
    STARTSCREEN : new Audio('sounds/soundtrack-idle-24s.wav'), 
    GAMEPLAY : new Audio('sounds/soundtrack-active-24s.wav'), 
    FX_BREAK : new Audio('sounds/effect-break.wav'), 
    FX_BUBBLE : new Audio('sounds/effect-bubble.wav'), 
    FX_EXPLOSION: new Audio('sounds/effect-explosion.wav') 
}; 

이 같은 각 오디오의 play() 메소드를 호출 할 수 있습니다으로

audio.GAMEPLAY.play(); 

모든 오디오를 음소거/음소거 해제하려면이 객체를 반복합니다.

function toggleMute() { 
    for (var i in audio) { 
    audio[i].muted = !audio[i].muted; 
    } 
} 
+0

Brilliant! 고마워, 해결책은 아주 간단했다. 프로그래밍에 관해서는 신참입니다. –

+0

이 답변이 귀하의 문제를 해결했거나 귀하의 질문에 답변 한 경우 올바른 대답으로 받아 들여주십시오. –

관련 문제