«

p5.js文本重复显示问题解决方案

磁力搜索 • 18 小时前 • 3 次点击 • 资讯分享


p5.js文本重复显示问题解决方案

本文旨在解决p5.js中出现的文本重复显示问题。该问题通常由于draw()函数的高频率重复执行以及异步加载图像时未正确处理时序导致。文章将提供两种解决方案:使用preload()函数预加载图像,以及使用noLoop()函数停止循环渲染或在draw()函数中使用background()或clear()函数清除画布。通过这些方法,可以确保文本只在图像加载完成后绘制一次,从而避免重复显示的问题。

在p5.js中,文本重复显示是一个常见的问题,尤其是在处理图像加载和动画时。 根本原因是draw()函数默认情况下会以非常高的频率(通常是每秒60帧)重复执行。 当图像异步加载时,draw()函数可能会在图像完全加载之前执行,导致文本在不同状态下被绘制多次,从而产生重复显示的现象。

以下是两种解决此问题的常用方法:

1. 使用 preload() 函数预加载图像

preload()函数在setup()函数之前执行,用于预加载资源,例如图像。这可以确保在setup()和draw()函数执行之前,图像已经完全加载。

let img;

function preload() {
  img = loadImage("https://mediumpurpleperfumeddegrees.boyuan12.repl.co/circuit1.webp");
}

function setup() {
  createCanvas(screen.availWidth, screen.availHeight);
  // textOutput(); // 如果textOutput函数在setup中被调用,确保它只被调用一次
  noLoop(); // 建议配合noLoop使用,确保只绘制一次
}

function draw() {
  image(img, screen.availWidth / 2 - img.width, 0, img.width * 1.25, img.height * 1.25);
  textSize(20);
  text("5V", screen.availWidth / 2 - img.width - 20, img.height / 2 + 30);
  text("50Ω", screen.availWidth / 2 - img.width + 100, img.height / 2 - 45);
  text("100Ω", screen.availWidth / 2 - img.width + 220, img.height / 2 + 50);
}
登录后复制


    还没收到回复