2016-06-08 1 views
0

이 코드를 실행할 때 다음과 같은 오류가 나타납니다 : "잡히지 않은 TypeError : 'AudioParam'에서 'linearRampToValueAtTime'을 실행하지 못했습니다 : 제공된 이중 값은 유한 값이 아닙니다." 클릭하지 않고 웹 오디오 오실레이터를 중지합니다

var ac = new window.AudioContext() || new window.webkit.AudioContext(); 
var osc; 
var gain = ac.createGain(); 

function playosc() { 
    osc = ac.createOscillator(); 
    osc.frequency.value = 440; 
    osc.connect(gain); 
    gain.connect(ac.destination); 
    gain.gain.setValueAtTime(0, ac.currentTime); 
    gain.gain.linearRampToValueAtTime(0.3, ac.currentTime + 0.01); 
    osc.start(); 
} 

function stoposc() { 
    gain.gain.linearRampToValueAtTime(0, ac.endTime - 0.01); 
    osc.stop(ac.endTime); 
} 

& ac.endTime 대신에

은 endTime- 사용자입니다 - 오류가 occures "endTime- 사용자가 정의되어 있지 않습니다." 어쩌면 누군가가 왜 그런지 설명 할 수 있을까요? 감사합니다

답변

0

AudioContextendTime 속성이 없습니다. AudioContext.endTime을 수행하면 정의되지 않은 값이 반환되므로 undefined-.01이 반환되고 NaN은 유한하지 않습니다. 당신은 당신이했던 것처럼 오실레이터에게 답변을

function stoposc() { 
    gain.gain.linearRampToValueAtTime(0, ac.currentTime + .01); 
    osc.stop(ac.currentTime + .02); 
} 
+0

감사를 만들 때 currentTime를 사용하고자하지만,이 방법은 다음 중지 클릭합니다. 다른 제안? –

관련 문제