我在这里有一个应用程序https://maliyshock.github.io/simon-says/ 对于这个应用程序,我正在使用这个库https://tonejs.github.io 我需要确保所有声音都成功下载. 在运行应用程序之前。
在我看来,在未来的更新中,它将成为吉他英雄,但带有 dubstep。:DI 将创建具有不同声音、节奏和持续时间的乐句。其主要特点是可重玩性。因为每首歌曲都是从短语库中生成的。
在 redux/react 堆栈中,我们应该通过 dispatch action 来更新应用程序的状态,告诉 reducer 要做什么。
问题是,我需要在游戏开始前下载所有声音。我看到的唯一方法是将它放在减速器内部。但这对我来说似乎是错误的。
const initialWordsState = {
dictionary: [
{
ALFA: {
color: {
name: 'blue',
value: BLUE
},
sound: new Tone.Player({ "url": alfa_sound, 'onload': ()=>{} }).toMaster(),
active: false
}
},
{
OMEGA: {
color: {
name: 'orange',
value: ORANGE
},
sound: new Tone.Player({ "url": omega_sound, 'onload': ()=>{} }).toMaster(),
active: false
},
},
{
BETHA: {
color: {
name: 'red',
value: RED
},
sound: new Tone.Player({ "url": betha_sound, 'onload': ()=>{} }).toMaster(),
active: false
},
},
{
THETHA: {
color: {
name: 'green',
value: GREEN
},
sound: new Tone.Player({ "url": thetha_sound, 'onload': ()=>{} }).toMaster(),
active: false
}
}
]
};
如您所见,每个按钮都有声音。将来,每个按钮都会有关于短语和声音持续时间的多种声音。
我不知道该怎么做。我唯一想到的是使用onload
来自的回调Tone.player
来更新商店并在下载所有声音时用勾号检查它。如果所有这些都已下载 - 显示正确的屏幕。但在我看来,这样做是错误的。