2016-10-15 2 views
0

Also habe ich an einem Projekt in AS3 gearbeitet und ich bin auf ein anderes merkwürdiges Verhalten gestoßen.ActionScript 3 & Runtime-Ressourcen

Hintergrund: Es ist ein gedrehtes Spiel. Ich habe es für die letzte Woche optimiert und jetzt läuft es wie Butter (konsequent!);

Problem: Wenn ich jedoch versuche, aus einem gespeicherten Spiel weiterzuspielen, läuft es weniger konsistent. Insbesondere wird es die ersten paar Umdrehungen normal ausführen, dann wird es in der Leistung drastisch verschlechtern, bis es meinen Computer einfriert. Bitte beachte, dass dies nur während des Kampfes geschieht, nicht während der Menüs oder zu irgendeiner anderen Zeit.

Gibt es etwas in Bezug auf Actionscript, das ich vermisse? Ich speichere das Spiel mit Cookies mithilfe der integrierten SharedObject-Klasse. Der Code, den ich verwende, um die Daten zu speichern und zu laden, ist unten (ich benutze auch die Byte-Array-Klasse).

public static function saveGame():void 
{ 
    /// save the game using byte array 
    registerClassAlias("Mob", Mob); 
    registerClassAlias("Skill", Skill); 
    var ba:ByteArray = new ByteArray(); 
    var savedData:* = Main.glblPlayer.setSaveObject(); 
    ba.writeObject(savedData); 
    ba.position = 0; 
    so.data.game5 = ba; 
    so.flush(); 
} 

public static function loadGame():Boolean 
{ 
    if (so.data.hasOwnProperty("game5")) 
    { 
     var ba:ByteArray = new ByteArray(); 
     ba = so.data.game5; 
     ba.position = 0; 
     var loadedData:Object = ba.readObject(); 
     glblPlayer.loadSaveObject(loadedData); 

     return true; 
    } 
    else 
    { 
     so.data.game = new Object(); 
     return false; 
    } 
} 

Ich überprüfte einfach den obigen Code und testete ihn ein bisschen mehr mit etwas Abwechslung. Wenn es 1-3 Mal geladen wird, ist es in Ordnung, aber danach verschlechtert sich die Leistung im Kampf mit jedem Zug. Ich habe keine Ahnung, wie das technische Zeug von ActionScript funktioniert oder wie es Ressourcen speichert, abgesehen davon, dass es Cookies sind und es im Cache ist.

Kann jemand etwas Licht darauf werfen, indem er vielleicht ein bisschen mehr darüber geht, wie das Speichern/Laden mit Flash-Spielen in AS3 erfolgt? Oder ist "sharedObject" alles, was es gibt?

Antwort

1

Verwenden Sie einen Profiler (wie Adobe Scout), um zu sehen, was das Problem verursacht.

Wenn ich raten musste, liegt das daran, dass Ihre (De-) Serialisierungsroutinen nicht richtig funktionieren und einen Speicherverlust haben. Aber wieder darüber zu streiten oder den Code zu betrachten, der sich fragt, was das Problem sein könnte, ist ein sinnloses Unterfangen. Verwenden Sie einen Profiler, um genau zu sehen, was das Problem ist.

+0

Ich wusste nicht einmal, dass das existiert, danke. –

+0

Also, ich lief es und es sagte "andere Overhead" nimmt eine enorme Menge an Prozessorleistung, dramatisch die Bildrate zu senken. Hast du jemals von so etwas gehört? Oder welcher Overhead soll sein? –

+0

@ Naomi Dennis Nein, tut mir leid. Dies könnte eine gute Folgefrage sein. Oder vielleicht finden Sie etwas hilfreiches in den Adobe-Foren, wie hier: https://forums.adobe.com/thread/1114767 – null