Hallo VB-P'ler,
ich bin gerade dabei in Javascript und HTML5 Canvas ein 2D-Spiel zu schreiben.
Da gibt es ein Modul das sich um das Bildermanagement kümmern soll.
D.h. die Bilder sollen am Anfang geladen werden und danach (Event) bereitstehen.
Gestartet wird der Vorgang so:
Da wird der Manager angewiesen, die Bilder zu laden und danach wird über die Callback-Funktion das Spiel gestartet.
Die load-Prozedur:
(this.media wird im Konstruktor von Game instanziiert)
Soweit, so gut.
Das Manager-Modul sieht dso aus:
Wird das Skript nun ausgeführt, wird nur das letzte Bild im Array geladen, die ersten drei sind irgendwie "kaputt" (img.readyState=undefined, nur bei Nummer 4 ist es complete). Bei einer Umsortierung ist es immer noch das letzte.
Daher meine Frage: Warum tritt dieser Fehler auf und wie kann ich ihn beheben? Wie kann ich sicherstellen dass ich nach der Ausführung 4 gültige Bilder im Array habe?
Ich bin für jede Hilfe dankbar,
ich bin gerade dabei in Javascript und HTML5 Canvas ein 2D-Spiel zu schreiben.
Da gibt es ein Modul das sich um das Bildermanagement kümmern soll.
D.h. die Bilder sollen am Anfang geladen werden und danach (Event) bereitstehen.
Gestartet wird der Vorgang so:
Da wird der Manager angewiesen, die Bilder zu laden und danach wird über die Callback-Funktion das Spiel gestartet.
Die load-Prozedur:
(this.media wird im Konstruktor von Game instanziiert)
Soweit, so gut.
Das Manager-Modul sieht dso aus:
C-Quellcode
- Media = function()
- {
- this.images = [];
- this.addImage = function(path, name)
- {
- this.images.push({"path":"res/game/img/"+path, "name":name});
- };
- this.loadAllImages = function(callbackMain)
- {
- this.loadImage(0, function(prog){ if(prog == 1) callbackMain() }, this);
- };
- this.loadImage = function(index, callbackLoad, t)
- {
- if(index < this.images.length)
- {
- var nImg = new Image();
- nImg.onload = function() {
- callbackLoad((index+1) / t.images.length);
- }
- nImg.src = this.images[index].path;
- this.images[index].img = nImg;
- this.loadImage(index+1, callbackLoad, this);
- }
- };
- };
Wird das Skript nun ausgeführt, wird nur das letzte Bild im Array geladen, die ersten drei sind irgendwie "kaputt" (img.readyState=undefined, nur bei Nummer 4 ist es complete). Bei einer Umsortierung ist es immer noch das letzte.
Daher meine Frage: Warum tritt dieser Fehler auf und wie kann ich ihn beheben? Wie kann ich sicherstellen dass ich nach der Ausführung 4 gültige Bilder im Array habe?
Ich bin für jede Hilfe dankbar,
SᴛᴀʀGᴀᴛᴇ01