node.js - 如何通过 Node.js(和 create-react-app)使用 p5.js 声音库预加载

标签 node.js p5.js

我试图在 Node.js 中使用 p5.js 声音库,而预加载函数只是抛出一个(可以理解的)错误,表明它没有被使用。如何使用 Node 中的预加载功能?

import React, { Component } from 'react';
import p5 from "p5";
import 'p5/lib/addons/p5.dom';
import "p5/lib/addons/p5.sound";
import sound from "./audio/song.mp3";
import './App.css';

let song;

function preload() { // @preload is required by P5.js
    p5.soundFormats('mp3', 'ogg');
    song = p5.loadSound(sound);
}






class App extends Component {

    render() {

        return (
            <div className="App">

               <button>Click me</button>
            </div>
        );
    }
}

export default App;

最佳答案

默认情况下,P5.js 使用全局模式,这意味着它将函数和变量置于全局范围内。这就是您使用 preload() 函数所做的事情。

问题是,这并不总是能与其他库很好地配合,而且看起来它会导致 node.js 出现问题。

您可以使用实例模式解决此问题,该模式将 P5.js 函数打包在一个您可以使用的对象中,而不是将所有内容都放在全局范围内。这是一个简单的例子:

var s = function( sketch ) {

  var x = 100; 
  var y = 100;

  sketch.setup = function() {
    sketch.createCanvas(200, 200);
  };

  sketch.draw = function() {
    sketch.background(0);
    sketch.fill(255);
    sketch.rect(x,y,50,50);
  };
};

var myp5 = new p5(s);

您可以在 this guide 中找到更多信息.

关于node.js - 如何通过 Node.js(和 create-react-app)使用 p5.js 声音库预加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48878447/

相关文章:

node.js - 如何确定 Node.js 发送 HTTP 响应正文所花费的时间?

javascript - 在discord.js 中设置 channel 权限时遇到问题

javascript - 使用 Gulp-Notify 在终端中显示项目文件夹路径,而不是硬盘上项目的整个路径

java - 在处理过程中使用 ToF 距离传感器从 USB 端口传输数据

javascript - 将现场播放音频的声音加载到 p5js 上

javascript - 如何将上传的图片添加到特定场景?

javascript - 如何使用 node.js 在 mySQL 中插入数组中的多条记录

node.js - 如果nodejs和mongoose中有额外的字段,如何断言验证失败

javascript - 一旦图像自运行时以来发生更改,如何在 p5.js 中重新加载图像?

javascript - 尝试在 p5.js 中调用多行字符串时出现 TypeError