Table of Contents
Preload JSON data and load pictures using p5.js
Asynchronous loading problem
Use callback functions to solve the problem of asynchronous loading
Things to note
Summarize
Home Web Front-end JS Tutorial Preload JSON data and load pictures using p5.js

Preload JSON data and load pictures using p5.js

Aug 12, 2025 am 11:57 AM

Preload JSON data and load pictures using p5.js

Preload JSON data and load pictures using p5.js

In p5.js, the preload() function is used to preload resources such as images, fonts, and JSON data before the setup() function. When you need to load JSON data first and then load other resources (such as pictures) based on the information in the JSON data, special attention should be paid to the issue of asynchronous loading. This article will explain how to use the loadJSON() and loadImage() functions correctly to ensure that all resources have been loaded before executing subsequent code.

Asynchronous loading problem

Both loadJSON() and loadImage() functions are asynchronous, meaning they do not block the execution of the program. When these functions are called, they are returned immediately and the resource is loaded in the background. This may cause the program to start executing subsequent code before the resource is loaded, thus throwing an error.

For example, if you try to use an image that has not yet been loaded in the setup() function, you may encounter a null or undefined error.

Use callback functions to solve the problem of asynchronous loading

To solve the problem of asynchronous loading, a callback function can be used. A callback function is a function executed after the asynchronous operation is completed. Both loadJSON() and loadImage() functions accept an optional callback function as the second parameter.

Here is an example of how to use a callback function to load JSON data and images:

 let imgData;
let images = [];
let numImagesLoaded = 0;
let totalImages;

function preload() {
  imgData = loadJSON("images.json", data => {
    imgData = data; // Assign the loaded data
    totalImages = imgData.images.length;
    for (let filename of imgData.images) {
      loadImage(filename, img => {
        images.push(img);
        numImagesLoaded ;
        if (numImagesLoaded === totalImages) {
          // All images are loaded, call a function to start the sketch
          startSketch();
        }
      });
    }
  });
}

function setup() {
  // setup() is now empty, startSketch() will be called when all images are loaded
}

function startSketch() {
  createCanvas(400, 400);
  background(220);
  // Now you can safely use the images array
  for (let i = 0; i <p> <strong>Code explanation:</strong></p><ol>
<li> <strong>imgData</strong> : Used to store data loaded from JSON files.</li>
<li> <strong>images</strong> : Used to store loaded images.</li>
<li> <strong>numImagesLoaded</strong> : Counter, record the number of loaded images.</li>
<li> <strong>totalImages</strong> : Read from a JSON file, indicating the total number of images to be loaded.</li>
<li> <strong>preload()</strong> :<ul>
<li> Use the loadJSON() function to load the "images.json" file.</li>
<li> The second parameter of loadJSON() is a callback function that is executed after the JSON data is loaded.</li>
<li> In the callback function, iterate over the imgData.images array and use the loadImage() function to load each image.</li>
<li> The loadImage() function also accepts a callback function, which is executed after the image is loaded.</li>
<li> In the callback function of loadImage(), add the loaded image to the images array and add the numImagesLoaded counter by 1.</li>
<li> When numImagesLoaded equals totalImages, it means that all images have been loaded and call the startSketch() function to start drawing.</li>
</ul>
</li>
<li> <strong>setup()</strong> : is now empty because all initialization work is done in the startSketch() function.</li>
<li> <strong>startSketch()</strong> :<ul>
<li> Create a canvas and set the background color.</li>
<li> Iterate through the images array and draw the loaded image onto the canvas.</li>
</ul>
</li>
</ol><p> <strong>images.json example:</strong></p><pre class="brush:php;toolbar:false"> {
  "images": ["1.jpg", "2.jpg", "3.jpg"]
}

Make sure that the 1.jpg, 2.jpg, and 3.jpg files exist in the corresponding directory of your sketch.

Things to note

  • Make sure that both the JSON files and the image files are in the correct directory so that p5.js can find them.
  • The preload() function must be defined before the setup() function.
  • Load all necessary resources in the preload() function to ensure that all resources are loaded when the setup() function is executed.
  • Correctly handle asynchronous loading, use callback functions or promises to ensure resource loading order.

Summarize

By using the callback functions of the loadJSON() and loadImage() functions, you can ensure that subsequent code is executed after the loading of JSON data and images is completed, avoiding problems caused by asynchronous loading. This method can effectively manage the loading order of resources and improve the stability and reliability of the program. Remember that understanding and handling asynchronous loading correctly is the key to writing high-quality p5.js code.

The above is the detailed content of Preload JSON data and load pictures using p5.js. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

ArtGPT

ArtGPT

AI image generator for creative art from text prompts.

Stock Market GPT

Stock Market GPT

AI powered investment research for smarter decisions

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

JavaScript realizes click-through image switching effect: professional tutorial JavaScript realizes click-through image switching effect: professional tutorial Sep 18, 2025 pm 01:03 PM

This article will introduce how to use JavaScript to achieve the effect of clicking on images. The core idea is to use HTML5's data-* attribute to store the alternate image path, and listen to click events through JavaScript, dynamically switch the src attributes, thereby realizing image switching. This article will provide detailed code examples and explanations to help you understand and master this commonly used interactive effect.

How to get the user's location with the Geolocation API in JavaScript? How to get the user's location with the Geolocation API in JavaScript? Sep 21, 2025 am 06:19 AM

First, check whether the browser supports GeolocationAPI. If supported, call getCurrentPosition() to get the user's current location coordinates, and obtain the latitude and longitude values ​​through successful callbacks. At the same time, provide error callback handling exceptions such as denial permission, unavailability of location or timeout. You can also pass in configuration options to enable high precision, set the timeout time and cache validity period. The entire process requires user authorization and corresponding error handling.

Common pitfalls and solutions for DOM element access in JavaScript Common pitfalls and solutions for DOM element access in JavaScript Sep 15, 2025 pm 01:24 PM

This article aims to solve the problem of returning null when obtaining DOM elements through document.getElementById() in JavaScript. The core is to understand the script execution timing and DOM parsing status. By correctly placing the tag or utilizing the DOMContentLoaded event, you can ensure that the element is attempted again when it is available, effectively avoiding such errors.

How to create a repeating interval with setInterval in JavaScript How to create a repeating interval with setInterval in JavaScript Sep 21, 2025 am 05:31 AM

To create a repetition interval in JavaScript, you need to use the setInterval() function, which will repeatedly execute functions or code blocks at specified milliseconds intervals. For example, setInterval(()=>{console.log("Execute every 2 seconds");},2000) will output a message every 2 seconds until it is cleared by clearInterval(intervalId). It can be used in actual applications to update clocks, poll servers, etc., but pay attention to the minimum delay limit and the impact of function execution time, and clear the interval in time when no longer needed to avoid memory leakage. Especially before component uninstallation or page closing, ensure that

The Nuxt 3 Composition API Explained The Nuxt 3 Composition API Explained Sep 20, 2025 am 03:00 AM

Nuxt3's Composition API core usage includes: 1. definePageMeta is used to define page meta information, such as title, layout and middleware, which need to be called directly in it and cannot be placed in conditional statements; 2. useHead is used to manage page header tags, supports static and responsive updates, and needs to cooperate with definePageMeta to achieve SEO optimization; 3. useAsyncData is used to securely obtain asynchronous data, automatically handle loading and error status, and supports server and client data acquisition control; 4. useFetch is an encapsulation of useAsyncData and $fetch, which automatically infers the request key to avoid duplicate requests

Number formatting in JavaScript: Use toFixed() method to retain fixed decimal places Number formatting in JavaScript: Use toFixed() method to retain fixed decimal places Sep 16, 2025 am 11:57 AM

This tutorial explains in detail how to format numbers into strings with fixed two decimals in JavaScript, even integers can be displayed in the form of "#.00". We will focus on the use of the Number.prototype.toFixed() method, including its syntax, functionality, sample code, and key points to be noted, such as its return type always being a string.

How to copy text to the clipboard in JavaScript? How to copy text to the clipboard in JavaScript? Sep 18, 2025 am 03:50 AM

Use the writeText method of ClipboardAPI to copy text to the clipboard, it needs to be called in security context and user interaction, supports modern browsers, and the old version can be downgraded with execCommand.

How to create a multi-line string in JavaScript? How to create a multi-line string in JavaScript? Sep 20, 2025 am 06:11 AM

TheBestAtOrreatEamulti-LinestringinjavascriptSisingStisingTemplatalalswithbacktTicks, whichpreserveTicks, WhichpreserveReKeAndEExactlyAswritten.

See all articles