2013-11-01 1 views
0

와 나는 createjscreatejs fileload 이벤트는 registerSound

<script type="text/javascript" src="http://code.createjs.com/createjs-2013.09.25.min.js"></script> 

의 CDN 버전을 사용하고 있습니다. 그것은 라인

createjs.Sound.addEventListener("loadComplete", this.handleComplete); 

그러나 "loadComplete는"최근에 사용되지와 "fileLoad"이벤트에 의해 대체되었다가있다. 내가

loadRegisterSound: function(){ 
    createjs.Sound.addEventListener("fileload", this.handleLoad); 
    createjs.Sound.registerSound("img/pop.mp3", "sound"); 
    } 

다음 백본보기에서 함수 내에서이 작업을 수행 할 경우 나는 handleLoad 기능

loadRegisterSound: function(){ 
     createjs.Sound.addEventListener("fileload", this.handleLoad); 

     }, 

handleLoad: function(){ 
    createjs.Sound.registerSound("img/pop.mp3", "sound"); 
    var ball = new createjs.Shape(); 
    ball.graphics.beginFill("#000000").drawCircle(0, 0, 50); 
    createjs.Tween.get(ball, {loop:true}).to({x:450}, 3000).to({x:50}, 3000); 
    createjs.Ticker.addEventListener("tick", this.tick); 
    ball.addEventListener("click", this.handleClick); 

    ball.x = 50; 
    ball.y = 200; 
    stage.addChild(ball); 
} 

에 위의 함수의 두 번째 절반을 이동하면 나는이

Uncaught TypeError: Cannot read property 'handleEvent' of undefined 

를 얻을 수 핸들로드 (handleLoad) 함수가 호출되는 것을 알 수 없습니다. 아무 반응이 없습니다. createjs http://www.createjs.com/Docs/SoundJS/classes/Sound.html에 대한 문서에서

, 나는 백본보기에 내 코드와 함께 사용하려고하면, 내가 예상치 못한 얻을,

createjs.Sound.addEventListener("fileload", createjs.proxy(this.loadHandler, (this)); 

그러나 fileload 이벤트와 함께 사용 이상한 createjs.proxy 기능이있다 ; 오류.

누군가가 fileload 이벤트를 createjs.registerSound api와 함께 사용할 수있는 방법을 설명 할 수 있습니까?

답변

1

createjs.proxy는 범위를 유지하는 데 사용되므로 핸들러 함수가 호출 될 때 객체 또는 라이브러리가있는 올바른 컨텍스트에서 호출됩니다. 자바 스크립트의 범위는 복잡한 주제이고 자세한 내용은 if 당신은 그것에 익숙하지 않습니다.

위의 코드 스 니펫이 이미지 폴더의 사운드를로드하고있는 것처럼 보이고로드 한 후에 모양을 만들고 스테이지에 추가합니다. 코드를 사용하여 , 나는 이것이 당신이 소리를 재생하고 싶은 생각 : 무대에 도형 그리기

createjs.Sound.addEventListener("fileload", createjs.proxy(this.handleLoad, this)); 
createjs.Sound.registerSound("img/pop.mp3", "sound"); 
function handleLoad(event) { 
    var instance = createjs.Sound.play("sound"); 
} 

이하지로드 및 재생 사운드 관련이있다, 그리고 그것은뿐만 아니라 코드를 분리하는 의미가 있습니다. 스크린 캐스트는 지금 구식이지만, 간단한 예제뿐만 아니라 시작하는데 도움이되는 createjs site에 대한 유용한 공식 자습서를 찾을 수 있습니다. 희망이 도움이됩니다.

+1

최신 버전의 createjs에는'on'() 메소드가 포함되어 있습니다.이 메소드는'addEventListener'를위한 편리한 단축키이며'scope' 매개 변수를 포함합니다. – Lanny