如何在 p5.js 中执行操作步骤
how to have steps of actions in p5.js
这是我希望在p5.js中实现的伪代码:
整个过程中形状一直在旋转。
形状移动到A点
图形在A点停留2秒
形状移动到B点
图形停留在B点旋转2秒
图形移动到C点
图形停留在C点旋转2秒
这是我已经尝试过但没有奏效的方法:
var angle=0.0
var x=[20,40,60,320]
var y=[50,70,90,280]
function setup() {
createCanvas(400, 400);
background(220);
}
function draw() {
for (i=0; i<x.length; i++) {
translate(x[i], y[i]);
setTimeout(rotate(angle), 1000);
ellipse(0,0,10,100);
angle+=0.1
pop()}
}
你真的不应该为这样的逻辑使用 setTimeout()
函数。
而是使用 P5.js 中内置的计时机制,例如 frameCount
变量、millis()
函数和 lerp()
函数。
下面是一个在 2 秒后移动一个圆圈的简单示例:
var y = 0;
function setup() {
createCanvas(400, 400);
}
function draw() {
background(220);
ellipse(width/2, y, 20, 20);
if(millis() > 2000){
y++;
}
}
这是我希望在p5.js中实现的伪代码:
整个过程中形状一直在旋转。
形状移动到A点
图形在A点停留2秒
形状移动到B点
图形停留在B点旋转2秒
图形移动到C点
图形停留在C点旋转2秒
这是我已经尝试过但没有奏效的方法:
var angle=0.0
var x=[20,40,60,320]
var y=[50,70,90,280]
function setup() {
createCanvas(400, 400);
background(220);
}
function draw() {
for (i=0; i<x.length; i++) {
translate(x[i], y[i]);
setTimeout(rotate(angle), 1000);
ellipse(0,0,10,100);
angle+=0.1
pop()}
}
你真的不应该为这样的逻辑使用 setTimeout()
函数。
而是使用 P5.js 中内置的计时机制,例如 frameCount
变量、millis()
函数和 lerp()
函数。
下面是一个在 2 秒后移动一个圆圈的简单示例:
var y = 0;
function setup() {
createCanvas(400, 400);
}
function draw() {
background(220);
ellipse(width/2, y, 20, 20);
if(millis() > 2000){
y++;
}
}