使用 p5.js,是否可以预加载一些在 .json 文件中定义的 .json 文件,这些文件本身是用 preload() 函数预加载的?
Using p5.js, is it possible to preload some .json files that are defined in a .json file that is itself preloaded with the preload() function?
我正在开发一个 p5.js 项目,该项目从 JSON 文件加载一些配置选项。我在 p5.js 的 preload()
函数中预加载配置文件,如下所示:
let config = {};
function preload() {
config = loadJSON("data/config.json");
}
配置 JSON 文件的一部分包含一些 song
对象,每个对象都有一个 filename
属性,这是我想要的另一个 JSON 文件预加载:
"songs": [
{
"title": "Song One",
"filename": "01.json"
},
...
]
我无法在 p5.js 的 setup()
函数之前访问配置文件数据(因为我无法保证配置文件在此之前已被完全读取),到那时我无法再预加载歌曲 JSON 个文件。
我正在想办法解决这个问题。
编辑:多亏了乔治在下面的回答,我让它按如下方式工作。以下是在进入 p5.js 的 setup()
函数之前运行的,这正是我所追求的:
let config = {};
function preload() {
config = loadJSON("config.json", configLoaded);
}
function configLoaded(_config) {
let songs_length = _config.album.songs.length;
for (let i = 0; i < songs_length; i++) {
loadJSON("data/" + _config.album.songs[i].filename, songLoaded);
}
}
function songLoaded(_song) {
console.log(_song);
}
您应该能够加载 loadJSON() 并设置数据加载或错误时的回调。
希望,如果一切都设置得井井有条,像这样简单的东西应该可以工作:
function preload() {
config = loadJSON("data/config.json");
loadJSON(config.songs[0].filename,songOneLoaded);
}
function songOneLoaded(data){
console.log("song one data loaded",data);
}
注意 我无法测试以上内容,但希望它能帮助您指明正确的方向。我还会仔细检查要加载的 .json 文件的路径。理想情况下,您也总是会处理错误情况。
你不能把它添加到 preload()
函数中吗?像这样:
let config = {};
let songOne =
function preload() {
config = loadJSON("data/config.json");
let songOneUrl = config.songs[0].filename;
songOne = loadSongFile(songOneUrl);
}
以上只是一个例子,语法可能不对(我不确定你是如何加载歌曲的)。不过思路应该是一样的。
编辑: 我刚看到 George 在我之前几秒钟回答了这个问题。我会相信他的话。
我正在开发一个 p5.js 项目,该项目从 JSON 文件加载一些配置选项。我在 p5.js 的 preload()
函数中预加载配置文件,如下所示:
let config = {};
function preload() {
config = loadJSON("data/config.json");
}
配置 JSON 文件的一部分包含一些 song
对象,每个对象都有一个 filename
属性,这是我想要的另一个 JSON 文件预加载:
"songs": [
{
"title": "Song One",
"filename": "01.json"
},
...
]
我无法在 p5.js 的 setup()
函数之前访问配置文件数据(因为我无法保证配置文件在此之前已被完全读取),到那时我无法再预加载歌曲 JSON 个文件。
我正在想办法解决这个问题。
编辑:多亏了乔治在下面的回答,我让它按如下方式工作。以下是在进入 p5.js 的 setup()
函数之前运行的,这正是我所追求的:
let config = {};
function preload() {
config = loadJSON("config.json", configLoaded);
}
function configLoaded(_config) {
let songs_length = _config.album.songs.length;
for (let i = 0; i < songs_length; i++) {
loadJSON("data/" + _config.album.songs[i].filename, songLoaded);
}
}
function songLoaded(_song) {
console.log(_song);
}
您应该能够加载 loadJSON() 并设置数据加载或错误时的回调。
希望,如果一切都设置得井井有条,像这样简单的东西应该可以工作:
function preload() {
config = loadJSON("data/config.json");
loadJSON(config.songs[0].filename,songOneLoaded);
}
function songOneLoaded(data){
console.log("song one data loaded",data);
}
注意 我无法测试以上内容,但希望它能帮助您指明正确的方向。我还会仔细检查要加载的 .json 文件的路径。理想情况下,您也总是会处理错误情况。
你不能把它添加到 preload()
函数中吗?像这样:
let config = {};
let songOne =
function preload() {
config = loadJSON("data/config.json");
let songOneUrl = config.songs[0].filename;
songOne = loadSongFile(songOneUrl);
}
以上只是一个例子,语法可能不对(我不确定你是如何加载歌曲的)。不过思路应该是一样的。
编辑: 我刚看到 George 在我之前几秒钟回答了这个问题。我会相信他的话。