我试图在音频以coffeescript结尾时调用函数,我用javascript编写代码并且它完美地工作但不在coffeescript中。
这是关于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代码,并使用chrome来朗读javascript代码。
更具体一点。我看到一个使用原子上的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
},
我使用在线转换器将babel代码转换为javascript,我得到了这个。
babel to javascript
//imput
this.music.onended = () => {
this.audio.play()
}
//ouput
this.music.onended = function () {
this.music.play();
};
然后我将javascript代码转换为coffeescript编译器,我得到了这个。
javascript to coffeescript
//imput
this.music.onended = function () {
this.autoPlay();
}
//ouput
@music.onended = ->
@music.play()
但代码只适用于babel。我不知道自己做错了什么。
答案 0 :(得分:1)
您可能希望使用coffeescript中的胖箭头功能绑定您的"这个":
@music.onended = =>
@autoPlay()
如果你可以发布一点上下文,那可能会有所帮助。