Ich habe ein Array, das Teil eines kleinen JS-Spiels ist, an dem ich arbeite. Ich muss (so oft wie vernünftig) überprüfen, dass keines der Elemente im Array die "Bühne" oder den "Spielplatz" verlassen hat, damit ich sie entfernen und die Skriptbelastung reduzieren kann.
Ich habe das Folgende programmiert und frage mich, ob jemand einen schnelleren/effizienteren Weg kennt, um dies zu berechnen. Dies wird alle 50ms ausgeführt (es handelt sich um die Bewegung).
Wo bots[i][1]
die Bewegung in X darstellt und bots[i][2]
die Bewegung in Y (ausschließlich) darstellt.
for (var i in bots) {
var left = parseInt($("#" + i).css("left"));
var top = parseInt($("#" + i).css("top"));
var nextleft = left + bots[i][1];
var nexttop = top + bots[i][2];
if(bots[i][1]>0&&nextleft>=PLAYGROUND_WIDTH) { remove_bot(i); }
else if(bots[i][1]<0&&nextleft<=-GRID_SIZE) { remove_bot(i); }
else if(bots[i][2]>0&&nexttop>=PLAYGROUND_HEIGHT) { remove_bot(i); }
else if(bots[i][2]<0&&nexttop<=-GRID_SIZE) { remove_bot(i); }
else {
//alert(nextleft + ":" + nexttop);
$("#" + i).css("left", ""+(nextleft)+"px");
$("#" + i).css("top", ""+(nexttop)+"px");
}
}
In ähnlicher Weise ist die Funktion remove_bot(i);
wie unten dargestellt. Ist das korrekt (ich kann nicht verändern, da sich alle IDs der Elemente im Array ändern).
function remove_bot(i) {
$("#" + i).remove();
bots[i] = false;
}
Vielen Dank für die gegebene Ratschläge!