Not at all! Callback preload() is the single best place to load assets. ![]()
BtW, you’ve got some missing indentation on your posted code. ![]()
We can use Beautifier.io in order to clean up our JS code. ![]()
Here’s my own take on your sketch (Warning: Not fully tested!): ![]()
index.html:
<!DOCTYPE html>
<meta charset=utf-8>
<meta name=viewport content=width=device-width,initial-scale=1>
<script defer src=https://cdn.JsDelivr.net/npm/p5></script>
<script defer src=https://Unpkg.com/p5/lib/addons/p5.dom.min.js></script>
<script defer src=https://Unpkg.com/p5/lib/addons/p5.sound.min.js></script>
<script defer src=sketch.js></script>
sketch.js:
// https://Discourse.Processing.org/t/pls-critique-my-code/12855/2
// @Epignosis567 & @GoToLoop (2019-Jul-21)
'use strict';
const IMG_NAME = 'picture.png', SONG_NAME = 'recording.m4a',
FOLDER = 'assets/', SUSPEND_STATE = 'suspended', FPS = 12;
var touchStarted = mousePressed, touchMoved = mouseMoved;
let ori, img, song;
function preload() {
ori = loadImage(FOLDER + IMG_NAME);
song = loadSound(FOLDER + SONG_NAME);
}
function setup() {
windowResized();
_renderer.style('display', 'block');
frameRate(FPS).imageMode(CENTER);
}
function draw() {
clear().image(img, mouseX, mouseY);
}
function windowResized() {
resizeCanvas(windowWidth, windowHeight, true);
(img = ori.get()).resize(width >> 1, height >> 1);
}
function mousePressed() {
const audCtx = getAudioContext();
audCtx.state === SUSPEND_STATE && audCtx.resume();
return mouseMoved();
}
function mouseMoved() {
song.isPlaying() || song.play();
return false;
}