Hi WeissBrot965,
da du Klassen verwendest sowie Module. Ist dein Code fortgeschritten. Aber es gibt einige Dinge die man optimieren könnte. Nutze doch das ganze Potential von JavaScript aus und nutze unterschiedliche Schleifen-Arten. Zudem solltest du Semikolon verwenden, auch wenn es die automatisches Semikolon-Einfügung gibt, kann es zu auch zu Problemen führen. Es wird empfohlen dieses zu verwenden um Fehlerquellen zu minimieren. Es ist auch gängige Praxis dies zu tun.
Du kannst das ganze semmantischer machen und dein Skript in den Head-bereich packen. Da kannst du abfragen ob der DOM geladen wurde.
Also deine JavaScript-Sammlung ist fortgeschritten, aber um professionell zu arbeiten kommen noch einige Dinge vor die du optimieren kannst.
import { canvas, c } from "./canvas.js";
import title_screen from "./scenes/Title_Screen/Title_Screen.js";
import power_up_menu from "./scenes/Power_up_menu/Power_up_menu.js";
export let frame_counter = 0;
export let game;
class Main {
constructor() {
this.scene = title_screen;
//this.scene = power_up_menu;
}
loopObjects(objects, method) {
for(let i = 0; i < objects.length; i++) {
if(objects[i][method] !== undefined) {
objects[i][method]();
}
if(objects[i].ui_objects !== undefined && method === "update") {
this.loopObjects(objects[i].ui_objects, method);
}
if(objects[i].game_objects !== undefined && method === "update") {
this.loopObjects(objects[i].game_objects, method);
}
}
}
update() {
this.loopObjects(this.scene.ui_objects, "update");
this.loopObjects(this.scene.game_objects, "update");
if(this.scene.update !== undefined) {
this.scene.update();
}
}
draw() {
this.loopObjects(this.scene.game_objects, "draw");
this.loopObjects(this.scene.ui_objects, "draw");
if(this.scene.draw !== undefined) {
this.scene.draw();
}
}
}
window.addEventListener("load", function() {
game = new Main();
function updateMain() {
c.clearRect(0, 0, canvas.width, canvas.height);
frame_counter++;
game.update();
game.draw();
requestAnimationFrame(updateMain);
}
updateMain();
});