Cra*_*zit 2 javascript processing p5.js
我尝试做这样的事情:
function setup() {
createCanvas(500, 250);
//frameRate(1);
}
function draw() {
background(50, 50, 150);
translate(10, 10);
for (let i = 0; i < 30; i++) {
rect(i*15, 0, 10, random(30, 120));
}
}Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.11/p5.min.js"></script>Run Code Online (Sandbox Code Playgroud)
但我想“冻结”这个画布,所以如果我加载页面,我将在 30 到 120 之间的随机高度上有 30 个 rect()。
一种选择是noLoop()在setup函数内部使用方法来停止draw方法循环。
function setup() {
createCanvas(500, 250);
noLoop()
}
function draw() {
background(50, 50, 150);
translate(10, 10);
for (let i = 0; i < 30; i++) {
rect(i * 15, 0, 10, random(30, 120));
}
}Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.11/p5.min.js"></script>Run Code Online (Sandbox Code Playgroud)
请注意,通过使用noLoop和loop方法,您可以在某些事件上切换绘制循环,例如mousePressed这样。
let stop = true;
function setup() {
const canvas = createCanvas(500, 250);
if(stop) noLoop();
canvas.mousePressed(function() {
stop = !stop;
stop ? noLoop() : loop()
})
}
function draw() {
background(50, 50, 150);
translate(10, 10);
for (let i = 0; i < 30; i++) {
rect(i * 15, 0, 10, random(30, 120));
}
}Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.11/p5.min.js"></script>Run Code Online (Sandbox Code Playgroud)
另一种选择是在setup函数中创建条形数组,然后用draw方法显示它们。这样你就不必停止draw循环。
const bars = []
class Bar {
constructor(x, y, w, h) {
this.x = x;
this.y = y;
this.w = w;
this.h = h;
}
show() {
rect(this.x, this.y, this.w, this.h);
}
}
function setup() {
createCanvas(500, 250);
for (let i = 0; i < 30; i++) {
bars.push(new Bar(i * 15, 0, 10, random(30, 120)))
}
}
function draw() {
background(50, 50, 150);
translate(10, 10);
bars.forEach(bar => bar.show())
}Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.11/p5.min.js"></script>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2349 次 |
| 最近记录: |