2017-04-10 15 views
0

오디오가 coffeescript로 끝날 때 함수를 호출하려고하는데 코드를 자바 스크립트로 처리하면 완벽하게 작동하지만 coffeescript에서는 작동하지 않습니다.coffeescript에서 오디오 onended 이벤트를 만드는 방법

다음은 coffeescript의 전체 코드입니다.

play:() -> 
    if (@getConfig "musicPath") != "../audioclips/backgroundmusics/" 
     @pathtoMusic = @getConfig "musicPath" 
    else 
     @pathtoMusic = path.join(__dirname, @getConfig "musicPath") 

    @musicFiles = fs.readdirSync(@pathtoMusic.toString()) 
    @music = new Audio(@pathtoMusic + @musicFiles[0]) 
    @music.volume = @getConfig "musicVolume" 

    @isPlaying = false if (@music.paused) 
    return null if @isPlaying 

    @isPlaying = true 
    @music.play() 
    @music.onended = -> 
     @music.play() //-----Here doesn't work------// 

저는 원자 문자 편집기를 사용하여 패키지의 coffeescript 코드를 럼 (rum)하고 크롬 코드는 자바 스크립트 코드를 사용하고 있습니다.

자세한 내용은 다음을 참조하십시오. 원자에 onended 이벤트를 사용하는 패키지를 보았습니다. 여기 코드가 있습니다.

'use babel'; 

epicVictory() { 
     if (this.isPlaying) return 
     console.log('Epic Victory!'); 
     let maxIndex = this.winFiles.length - 1 
     let minIndex = 0 
     let randomIndex = Math.floor(Math.random() * (maxIndex - minIndex + 1) + minIndex) 
     this.audio = new Audio(this.winpath + this.winFiles[randomIndex]) 

     this.audio.onended =() => { 
      this.audio.play() //-------here work-----// 
      //this.isPlaying = false 
     } 

    this.isPlaying = true 

    this.audio.volume = this.volume 
    this.audio.play() 
    return true 
}, 

코드 챔피언 나는 온라인 변환기를 사용하여 자바 스크립트로 바벨 코드를 변환 나는이 있어요. 자바 스크립트

//imput 
this.music.onended =() => { 
    this.audio.play() 
} 

//ouput 
this.music.onended = function() { 
    this.music.play(); 
}; 

바벨 그럼 컴파일러를 커피 스크립트에 자바 스크립트 코드를 변환 나는이 있어요.

자바 스크립트

//imput 
this.music.onended = function() { 
    this.autoPlay(); 
} 

//ouput 
@music.onended = -> 
    @music.play() 

를 커피 스크립트합니다 그러나 코드는 바벨에서 작동합니다. 나는 내가 뭘 잘못하고 있는지 몰라.

+0

오디오는 정상적으로 재생되지만 오디오가 끝나면 아무 작업도 수행하지 않습니다. –

답변

1
당신은 "이"바인딩 커피 스크립트에 지방 화살표 기능을 사용할 수 있습니다

: 당신이 컨텍스트의 조금 더를 게시 할 수있는 경우

@music.onended = => 
@autoPlay() 

, 그 도움이 될 수 있습니다.

+0

감사합니다. : D –

+0

괜찮습니다! 그 해결책으로 표시하는 것이 마음에 드십니까? –