0

我在这里有一个应用程序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来更新商店并在下载所有声音时用勾号检查它。如果所有这些都已下载 - 显示正确的屏幕。但在我看来,这样做是错误的。

4

0 回答 0