2016-07-01 12 views
0

Ich arbeite gerade an diesem Spiel und ich habe Probleme mit dem Laden von Bildern. Oder sollte ich "Entladen" sagen?Wie Phaser: Bilddatei zu ändern

Ich hatte diese Bilddatei 'Kreis' und ich habe diese Bilddatei verwendet, um Sprite 'Ball' zu erstellen. Ich löschte diese Datei 'circle' und legte eine neue Datei an und benannte sie in 'circle' um. Im Grunde habe ich es ersetzt.

ABER, wenn ich meine Arbeit speichere und mein Spiel auffrische, verwendet es immer noch alte Datei, obwohl es nicht mehr in meinem Asset-Ordner ist! Wenn ich den Dateinamen in etwas Anderes wie "circle1" ändere, funktioniert es plötzlich wieder (das bedeutet, dass ein neues Bild geladen wird). Und dann, wenn ich zurück zu "Kreis" gehe, geht es zurück zum alten Bild.

game.load.image('circle',  'assets/circle.gif'); 

P.S. Ich habe versucht, meinen Computer und meinen MAMP-Server neu zu starten.

Antwort

1

Dies passiert, weil der Browser die Assets zwischenspeichert. Im Grunde genommen schaut der Browser zuerst in den Cache, sieht, dass eine Datei mit diesem Namen und dieser URL schon da ist und entscheidet, dass er sich nicht an den Server wenden muss und somit zeigt er Ihnen die alte Datei an. Löschen Sie den Cache des Browsers und Sie sollten die neue Datei sehen.

Eine Abhilfe aus Phaser Sicht wäre einfach Versionierung, um die Dateien hinzuzufügen, so dass anstelle von

game.load.image('circle', 'assets/circle.gif');,

Sie wie folgt vor:

var version = 1; 
game.load.image('circle', 'assets/circle.gif' + '?' + version); 

und ändern version ' s Wert jedes Mal, wenn Sie ein Asset ändern.

+1

Danke für die tolle Lösung. Hier ist auch, was ich gefunden habe. Wenn Sie im Inkognito-Modus (geheimer Modus) öffnen, werden Sie keine dieser Cache-Dateien speichern, so dass das Bild jedes Mal aktualisiert wird. –

0

Es dauerte eine Weile, um herauszufinden. (Immer noch nicht sicher)

Ich denke, wenn ich ein neues Sprite mit dem Bild erstellen, lassen Sie die neue Bilddatei alle alten ersetzen. Ich weiß nicht warum. Bitte erklären Sie mir, wenn Sie wissen, warum oder wie Sie dies genau beheben können.