我用Phaser.js开发游戏
现在我需要在游戏开始之前解析csv文件,然后使用Papa Parse。 csv文件包含用于Phaser中预加载阶段的图像URL。
我试着这样做:
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]);
}
}
但是在那种情况下,函数preload在papa解析csv之前结束,导致它异步。 如何使所有函数按顺序执行,而不是异步?
答案 0 :(得分:2)
为什么需要同步?
试试这个:
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]);
}
}