javascript - 处理为 P5 — 如何转换?

标签 javascript processing p5.js

我正在尝试将以下草图转换为 P5.js。不幸的是,我遇到了几种语法错误,包括 PGraphics, beginDraw() and endDraw() 。我的问题是:

将Processing转换为P5(反之亦然)的最佳方法是什么?而且,P5.js 可以替代这些有问题的语法吗?

PGraphics sourceImage;
PGraphics maskImage;

function setup() {
  createCanvas(512, 512);

  // create source
  sourceImage = createGraphics(512,512);
  sourceImage.beginDraw();
  sourceImage.fill(255,0,0);
  sourceImage.translate(width/2,height/2);
  sourceImage.rotate(PI/3);
  sourceImage.rect(0,0,100,500);
  sourceImage.endDraw();

  // create mask
  maskImage = createGraphics(512,512);
  maskImage.beginDraw();
  maskImage.triangle(30, 480, 256, 30, 480, 480);
  maskImage.endDraw();

  // apply mask
  sourceImage.mask(maskImage);
}

function draw() {
  // show masked source
  image(sourceImage, 0, 0);
}

最佳答案

没有办法神奇地将脚本从Processing转换为P5。

阅读this tutorial about Processing transition to p5 .


正如 @John Coleman 所说,变量必须使用 var 创建

var sourceImage;
var maskImage;

P5.Graphics 的工作方式几乎与处理中一样。但您不需要 beginDrawendDraw

function setup() {
  createCanvas(512, 512);

  // create source
  sourceImage = createGraphics(512,512);
  sourceImage.fill(255,0,0);
  sourceImage.translate(width/2,height/2);
  sourceImage.rotate(PI/3);
  sourceImage.rect(0,0,100,500);

  // create mask
  maskImage = createGraphics(512,512);
  maskImage.fill(0, 0, 0);
  maskImage.triangle(30, 480, 256, 30, 480, 480);

此外, mask 不适用于图形。在 P5 中,这仅适用于图像。没有简单的方法将图形转换为图像。所以,我写了一个函数。

  // apply mask
  sourceImage = graphicToImage(sourceImage);
  maskImage = graphicToImage(maskImage);
  sourceImage.mask(maskImage)
}

function graphicToImage(graphic){
  // create an image with the same size.
  img = createImage(graphic.width, graphic.height);
  // load graphic and img pixels into pixels array
  graphic.loadPixels();
  img.loadPixels();

  // copy pixels from graphic to img
  for (var i = 0; i < img.pixels.length; i++) {
    img.pixels[i] = graphic.pixels[i];
  }
  // update img's pixels from pixels array
  img.updatePixels();

  // return copied image
  return img;
}

我们到了!

function draw() {
  // show masked source
  image(sourceImage, 0, 0);
}

关于javascript - 处理为 P5 — 如何转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50042423/

相关文章:

javascript - Highcharts:按系列名称设置单独的文本颜色

javascript - 使用 .calendar() 方法时,moment.js 格式日期时间中的错误不起作用

JavaScript 按钮没有响应

arduino - 如何使用处理在 GUI 中添加固定步进旋钮?

javascript - 不变不保持不变?

javascript - 单个元素中的多个文本节点?

java - 处理中的面向对象编程错误

java - MongoDB - 如何在不定义键的情况下访问值字段

javascript - 根据用户输入引用类中的不同对象

three.js - 如何通过折射和反射在 Canvas 中创建由玻璃制成的文本?