首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tone.js不配合反应

Tone.js不配合反应
EN

Stack Overflow用户
提问于 2017-06-12 19:50:18
回答 1查看 2.2K关注 0票数 1

我想要实现一个基本的音调播放器,从一个文件夹加载一个文件,并按下ReactJS中的一个按钮来播放它。

代码语言:javascript
复制
import React, { Component, PropTypes } from 'react';
import ReactDOM from 'react-dom';
import Tone from 'tone';
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
import Slider from 'material-ui/Slider';
import RaisedButton from 'material-ui/RaisedButton';


let sound = new Tone.Player("kick.wav").toMaster();
export default class App extends Component {

render() {

    return(
        <MuiThemeProvider>
            <div>
                <Slider min={0} max={100} step={10} className = "Slider1Test1" style={{height: 400}} axis="y"/>
                <RaisedButton label="A" className = "RaisedB1Test1" style={{width: 10}}/>

                <Slider min={0} max={100} step={10} className = "Slider2Test1" style={{height: 400}} axis="y"/>
                <RaisedButton label="B" className = "RaisedB2Test1" style={{width: 10}}/>
            </div>
        </MuiThemeProvider>
    );
}
}

但这给出了一个错误:

DOMException:无法解码音频数据modules.js?hash=625032f…::48100隐(承诺) Tone.Buffer:无法解码音频数据: kick.wav

我试过"./kick.wav“、"./kick.ogg”、"./kick.mp3“。我试过给出完整的路径。我试着只使用网络音频,通过给XMLHTTPRequest -这是相同的错误一直。

我是新的反应-请告诉我,如果有正确的方法来做这件事。我需要使用componentDidMount吗?)我也试过用它。请让我知道正确的方法)。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-13 17:37:50

看起来您使用的是流星,这在某种程度上阻止了您向服务器请求加载您的文件。最简单的解决方案是在根目录中创建一个public文件夹,并将示例放在其中。然后将./kick.wav传递给您的Tone.Player构造函数。构造函数在外壳下发出GET请求,并将自动找到您的文件。除了这些更改之外,在缓冲区完成加载之后,我还必须添加此代码来播放示例:

代码语言:javascript
复制
const x = new Tone.Player('./kick.wav').toMaster()
Tone.Buffer.on('load', () => {
    x.start();
})
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44507623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档