2016-11-16 1 views
1

loadManifest를 사용하여 여러 mp3 파일을로드하고 있지만로드 된 사운드를 변수에 할당하는 방법에 대해 약간 혼란 스럽습니다. 여기에 createInstance를 사용할 수 있습니까?SoundJS - 변수에 사운드 할당

var myRoot = this; 

var queue = new createjs.LoadQueue(); 
queue.addEventListener("fileload", handleFileLoad); 
queue.addEventListener("complete", handleComplete); 

queue.loadManifest([{ src: "media/file1.mp3", id: "sound1" }, 
        { src: "media/file2.mp3", id: "sound2" }, 
        { src: "media/file3.mp3", id: "sound3" }]); 

function handleFileLoad(event) {  
    // assign each sound to unique variable 
    myRoot.sound1 = createjs.Sound.createInstance("sound1"); 
    myRoot.sound2 = createjs.Sound.createInstance("sound2"); 
    myRoot.sound3 = createjs.Sound.createInstance("sound3"); 
} 

function handleComplete(event) { 
    // start playing sound1 
    myRoot.sound1.play(); 
} 

가 어떻게이 ID를 사용하여 사운드의 인스턴스를 생성하고 내가 나중에 쉽게 액세스 할 수있는 변수에 할당 할 수 있습니다

내 코드는 현재 다음과 같습니다? 사운드를 등록하기 전에 등록해야합니까?

감사합니다.

답변

1

다음 줄이 없거나, 그 코드가 필요했습니다 모든 작동하는 것입니다되었습니다

queue.installPlugin(createjs.Sound); 

즉, handleComplete 기능

전체 작업 코드에서 변수 할당을 이동하는 것이 좋습니다 다음과 같이 표시됩니다.

var myRoot = this; 

var queue = new createjs.LoadQueue(); 
queue.installPlugin(createjs.Sound); 
queue.addEventListener("complete", handleComplete); 

queue.loadManifest([{ src: "media/file1.mp3", id: "sound1" }, 
        { src: "media/file2.mp3", id: "sound2" }, 
        { src: "media/file3.mp3", id: "sound3" }]); 

function handleComplete(event) { 
    // assign each sound to unique variable 
    myRoot.sound1 = createjs.Sound.createInstance("sound1"); 
    myRoot.sound2 = createjs.Sound.createInstance("sound2"); 
    myRoot.sound3 = createjs.Sound.createInstance("sound3"); 
    // start playing sound1 
    myRoot.sound1.play(); 
} 
1

createjs.Sound.play(id) 메서드는 사운드 개체의 인스턴스를 반환합니다.

그래서 당신은 할 수 있습니다 :

myRoot.sound1 = createjs.Sound.play(id, [createjs.Sound.INTERRUPT_ANY], [delay], [offset], [loops], [volume]); 

이 후에는 자유롭게 소리를 조작하는 참조를 사용할 수 있습니다. 예를 들어 :

myRoot.sound1.volume = 0.5; 
myRoot.sound1.addEventListener("complete", handleSoundComplete); 
myRoot.sound1.play(); 
myRoot.sound1.stop(); 

이를 사용하여 당신은 또한 배열 사운드 인스턴스를 저장처럼 재사용하거나 대신 사용자 정의 재생 방법을 사용하여 ID에 의해 그들에게 모든 시간을 재생할 수 있습니다, 여러 가지 다른 가능성을 가지고있다.

또한 manifest loader를 사용하여 사운드를로드하는 경우 자동으로 등록되므로 개별 사운드를 개별적으로 등록 할 필요가 없습니다.

+0

답장을 보내 주셔서 감사합니다. 로드 할 사운드가 하나뿐이라면이 기능이 훌륭하지만 매니페스트로로드해야하는 mp3가 여러 개 있기 때문에 효과적입니다. 내 문제는 정말 어리석은 일이었습니다. 모든 작업이 가능하도록 한 줄을 포함하는 것을 잊었습니다. 이 게시물을보고 답변을 게시 할 시간을 가져 주셔서 대단히 감사합니다! – anton980