我正在用电子创建一个节拍器,使用吼叫器播放音频。
当窗口在屏幕上时,音频会像它应该的那样播放,但是当我最小化窗口时,音频开始以错误的间隔播放并且节拍器出现故障。
这些是我用来播放节拍的音频
const mainBeat = new Howl({
src: ["sounds/Boutique808.mp3"],
onplayerror: (e) => console.log(e),
});
const secondBeat = new Howl({
src: ["sounds/tick.mp3"],
onplayerror: (e) => console.log(e),
});
startBeats 函数创建一个由函数 bpmToM 计算的间隔,如果 bpm 为 60,则结果为 750ms
函数播放节拍播放主节拍,如果当前节拍为 1 或 0 否则播放第二拍
startBeats = (..._: any[]) => {
this.setState({ playing: true });
this.playBeat();
this.beatInterval = setInterval(() => {
this.playBeat();
}, bpmToMs(this.state.currentBpm));
};
playBeat = () => {
this.incrementBeat();
if (this.state.currentBeat === 1 || this.state.currentBeat === 0)
mainBeat.play();
else secondBeat.play();
};
我已经从我的反应类组件中复制了必要的行,所以不用担心意外的单独语法:)
我通过添加背景来解决这个问题 节流:在电子网络首选项中为 false
mainWindow = new MainWindow({
width: width,
height: height,
minWidth: width,
minHeight: height - 300,
maxWidth: width,
webPreferences: {
preload: path.join(__dirname, "preload.js"),
backgroundThrottling: false,
},
icon: path.join(__dirname, "assets/icons/png/1204x1024.png"),
});
现在它工作得很好!