Javascript 如何在preload stage Phaser.js中使用Papa parse解析csv,而不是异步解析?
我用Phaser.js开发游戏 现在我需要在游戏开始之前解析csv文件,并使用Papa解析。 csv文件包含Phaser中预加载阶段的图像url 我试着这样做:Javascript 如何在preload stage Phaser.js中使用Papa parse解析csv,而不是异步解析?,javascript,csv,phaser-framework,papaparse,Javascript,Csv,Phaser Framework,Papaparse,我用Phaser.js开发游戏 现在我需要在游戏开始之前解析csv文件,并使用Papa解析。 csv文件包含Phaser中预加载阶段的图像url 我试着这样做: function preload() { Papa.parse("http://localhost:9000/bad_images.csv", { download: true, complete: function(results) { i = 1;
function preload() {
Papa.parse("http://localhost:9000/bad_images.csv", {
download: true,
complete: function(results) {
i = 1;
results.data.forEach(function(entry){
bad_images.append(entry);
bad_names.append("b" + i++);
})
}
});
Papa.parse("http://localhost:9000/good_images.csv", {
download: true,
complete: function(results) {
i = 1;
results.data.forEach(function(entry){
good_images.append(entry);
good_names.append("b" + i++);
})
}
});
for (var i = 0; i < good_images.length; ++i) {
game.load.image(good_names[i], good_images[i]);
}
for (var i = 0; i < bad_images.length; ++i) {
game.load.image(bad_names[i], bad_images[i]);
}
}
函数预加载(){
爸爸解析(“http://localhost:9000/bad_images.csv", {
下载:对,
完成:功能(结果){
i=1;
results.data.forEach(函数(条目){
错误的图片。追加(条目);
错误的名称。附加(“b”+i++);
})
}
});
爸爸解析(“http://localhost:9000/good_images.csv", {
下载:对,
完成:功能(结果){
i=1;
results.data.forEach(函数(条目){
好的图片。附加(条目);
好名字。附加(“b”+i++);
})
}
});
对于(变量i=0;i
但在这种情况下,函数预加载在papa解析csv之前结束,导致它异步。
如何使所有函数按顺序而不是异步执行?为什么需要同步 试试这个:
function loadCSV(){
Papa.parse("http://localhost:9000/bad_images.csv", {
download: true,
complete: function(results) {
i = 1;
results.data.forEach(function(entry){
bad_images.append(entry);
bad_names.append("b" + i++);
});
Papa.parse("http://localhost:9000/good_images.csv", {
download: true,
complete: function(results) {
i = 1;
results.data.forEach(function(entry){
good_images.append(entry);
good_names.append("b" + i++);
});
startGame(); // Start the game when the load is finished
}
});
}
});
}
function startGame(){ .... }
function preload() {
for (var i = 0; i < good_images.length; ++i) {
game.load.image(good_names[i], good_images[i]);
}
for (var i = 0; i < bad_images.length; ++i) {
game.load.image(bad_names[i], bad_images[i]);
}
}
函数loadCSV(){
爸爸解析(“http://localhost:9000/bad_images.csv", {
下载:对,
完成:功能(结果){
i=1;
results.data.forEach(函数(条目){
错误的图片。追加(条目);
错误的名称。附加(“b”+i++);
});
爸爸解析(“http://localhost:9000/good_images.csv", {
下载:对,
完成:功能(结果){
i=1;
results.data.forEach(函数(条目){
好的图片。附加(条目);
好名字。附加(“b”+i++);
});
startGame();//加载完成后开始游戏
}
});
}
});
}
函数startName(){….}
函数预加载(){
对于(变量i=0;i
它需要同步,因为在phaser.js中,游戏在预加载功能后开始。如果imeges没有加载,它实际上对游戏不好。因此,您必须在预加载函数之前解析csv,然后启动游戏并加载游戏中的所有图像preload@StopKran同步下载将锁定您的浏览器页面。坦率地说,现代浏览器不允许同步XMLHttpRequest,正因为如此。唯一的方法是异步执行。