我正在编写地图编辑器,我需要让地图编辑器运行得更快,我被告知删除每个嵌套for循环并在没有for语句的情况下执行它们,有人可以指导我如何做这样的事情?
var tiles = [];
var draw = 0;
var w = 0;
var h = 0;
$(document).ready(function () {
$('#tile-selector img').click(function () {
draw = $(this).attr("tile");
});
});
function run() {
w = $("#w").val();
h = $("#h").val();
for (var x = 0; x < h; x++) {
tiles[x] = [];
for (y = 0; y < w; y++) {
tiles[y] = [];
$("#box").append("<img src='src/" + draw + ".gif' x='" + x + "' y='" + y + "' height='15' width='15'></img>");
tiles[x][y] = draw;
}
$("#box").append("<br />");
}
$("#box img").click(function () {
$(this).attr("src", "src/" + draw + ".gif");
tiles[$(this).attr("x")][$(this).attr("y")] = draw;
});
}
function end() {
var output = "";
for (var x = 0; x < w; x++) {
for (var y = 0; y < h; y++) {
if (tiles[x][y] > 0) {
output += "tiles[" + x + "+" + y + "*width] =" + tiles[x][y] + ";\r\n";
}
}
}
$("#output").val(output);
}
删除第一个循环并放置tile [y] = [];在嵌套循环中
答案 0 :(得分:0)
对于这个循环
for(var y = 0; y < h; y++) {
for (x = 0; x < w; x++) {
$("#box").append("<img src='src/" + draw +".gif' x='"+ x +"' y='"+ y +"' height='15' width='15'></img>");
tiles[x][y] = draw;
}
$("#box").append("<br />");
}
一些事情,改变循环的顺序可能会有所帮助,因为javascript使用行主要顺序。
将$('#box')
移到外面会有助于甚至将它们全部删除,例如
var box = "";
for(var x = 0; z < w; x++) {
for (y = 0; y < h; y++) {
box += "<img src='src/" + draw +".gif' x='"+ x +"' y='"+ y +"' height='15' width='15'></img>";
tiles[x][y] = draw;
}
box += "<br />";
}
$('#box').append(box);
box = null;
应该加快速度