【问题标题】:How do you get p5.js into a website?如何让 p5.js 进入网站?
【发布时间】:2015-05-14 00:58:01
【问题描述】:

我几乎在整个互联网上进行了搜索,并且我已经非常接近答案,但我仍然无法弄清楚如何在网站中使用 p5.js。更具体地说,我希望能够创建一个 weebly,并让它显示 p5 代码。我知道它涉及通过文件或在线文件加载 p5.js 的网站,以及sketch.js。如果没有办法在网络上使用 p5.js,有没有办法在互联网上使用一般的处理代码(或类似的东西)?谢谢

【问题讨论】:

    标签: javascript html web processing p5.js


    【解决方案1】:

    按照以下说明操作:http://p5js.org/get-started/

    或者这些说明:https://github.com/processing/p5.js/wiki/Embedding-p5.js

    换句话说,您需要创建一个使用 p5.js 的 html 文件,而您应该已经拥有该文件。

    然后您需要将该 html 文件以及您正在使用的任何资源上传到某种网络主机。

    您可能还想查看标准处理编辑器附带的Processing.js

    【讨论】:

      【解决方案2】:

      创建 html 文件和一个 sketch.js 文件

      在您的 html 文件中,您可以放入一个入门模板,然后在 sketch.js 中添加 p5js

      查看文档here

      // All the paths
      var paths = [];
      // Are we painting?
      var painting = false;
      // How long until the next circle
      var next = 0;
      // Where are we now and where were we?
      var current;
      var previous;
      
      function setup() {
        createCanvas(720, 400);
        current = createVector(0,0);
        previous = createVector(0,0);
      };
      
      function draw() {
        background(200);
        
        // If it's time for a new point
        if (millis() > next && painting) {
      
          // Grab mouse position      
          current.x = mouseX;
          current.y = mouseY;
      
          // New particle's force is based on mouse movement
          var force = p5.Vector.sub(current, previous);
          force.mult(0.05);
      
          // Add new particle
          paths[paths.length - 1].add(current, force);
          
          // Schedule next circle
          next = millis() + random(100);
      
          // Store mouse values
          previous.x = current.x;
          previous.y = current.y;
        }
      
        // Draw all paths
        for( var i = 0; i < paths.length; i++) {
          paths[i].update();
          paths[i].display();
        }
      }
      
      // Start it up
      function mousePressed() {
        next = 0;
        painting = true;
        previous.x = mouseX;
        previous.y = mouseY;
        paths.push(new Path());
      }
      
      // Stop
      function mouseReleased() {
        painting = false;
      }
      
      // A Path is a list of particles
      function Path() {
        this.particles = [];
        this.hue = random(100);
      }
      
      Path.prototype.add = function(position, force) {
        // Add a new particle with a position, force, and hue
        this.particles.push(new Particle(position, force, this.hue));
      }
      
      // Display plath
      Path.prototype.update = function() {  
        for (var i = 0; i < this.particles.length; i++) {
          this.particles[i].update();
        }
      }  
      
      // Display plath
      Path.prototype.display = function() {
        
        // Loop through backwards
        for (var i = this.particles.length - 1; i >= 0; i--) {
          // If we shold remove it
          if (this.particles[i].lifespan <= 0) {
            this.particles.splice(i, 1);
          // Otherwise, display it
          } else {
            this.particles[i].display(this.particles[i+1]);
          }
        }
      
      }  
      
      // Particles along the path
      function Particle(position, force, hue) {
        this.position = createVector(position.x, position.y);
        this.velocity = createVector(force.x, force.y);
        this.drag = 0.95;
        this.lifespan = 255;
      }
      
      Particle.prototype.update = function() {
        // Move it
        this.position.add(this.velocity);
        // Slow it down
        this.velocity.mult(this.drag);
        // Fade it out
        this.lifespan--;
      }
      
      // Draw particle and connect it with a line
      // Draw a line to another
      Particle.prototype.display = function(other) {
        stroke(0, this.lifespan);
        fill(0, this.lifespan/2);    
        ellipse(this.position.x,this.position.y, 8, 8);    
        // If we need to draw a line
        if (other) {
          line(this.position.x, this.position.y, other.position.x, other.position.y);
        }
      }
      <html>
        <head>
          <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.6.0/p5.js"></script>
          <script src="sketch.js"></script>
        </head>
        <body>
        </body>
      </html>

      【讨论】:

        【解决方案3】:

        如果您使用 Mac 或 Windows 编辑器(撰写本文时版本 0.5.7 (0.5.7))创建草图,请转到“另存为”,编辑器将导出您的“网络就绪”文件。

        您保存的文件将与您的草图同名,并将包含一个 index.html 和一个草图.js 文件以及一个“库”文件夹。您可以按原样发布 .html 和 .js 文件,并检查 .html 是否有指向 p5 .js 库的链接。

        <script src="libraries/p5.js" type="text/javascript"></script>
        <script src="libraries/p5.dom.js" type="text/javascript"></script>
        <script src="libraries/p5.sound.js" type="text/javascript"></script>
        <script src="sketch.js" type="text/javascript"></script>
        

        【讨论】:

          猜你喜欢
          • 2020-12-07
          • 2017-12-03
          • 2019-11-14
          • 1970-01-01
          • 2020-03-03
          • 2017-10-08
          • 2021-06-19
          • 1970-01-01
          • 2014-10-02
          相关资源
          最近更新 更多