当节点应用触发事件时,我正在使用audio-player package在本地播放声音。触发事件时,将使用需要打开的特定文件调用函数:
playSound(fileName);
单独的功能如下所示:
player = new Player('someDirectory/' + fileName + '.mp3');
player.play();
这将打开并开始完美地播放文件,但是当事件快速连续触发时,两个声音将同时播放。虽然我最初只想添加一个:
player.stop();
在新玩家之前
定义,前一个实例明显超出范围,因为该函数已被第二次调用。如何在重新开始播放之前停止播放器的所有其他实例?
答案 0 :(得分:1)
你需要在外部范围内声明player
变量,以便每个函数“看到”同一个玩家。
var player;
function playSound(fileName) {
if (player) {
player.stop();
}
player = new Player(fileName);
player.play();
}
这称为闭包。
答案 1 :(得分:0)
你的播放器应该是静态的,只有一个实例应该存在并播放所有声音。
function Podcast() {};
Podcast.FILE_EXTENSION = 'mp3';
Podcast.download = function(podcast) {
console.log('Downloading ' + podcast + ' ...');
};
这里我们创建了一个名为Podcast的构造函数,它带有一个名为FILE_EXTENSION的静态属性和一个名为download的静态方法。
http://elegantcode.com/2011/01/19/basic-javascript-part-7-static-properties-and-methods/