2016-10-15 34 views
0

所以,我一直在AS3中開展一個項目,並且遇到了另一個奇怪的行爲。ActionScript 3和運行時資源

背景:這是一個基於原來的遊戲。過去一週我一直在優化它,現在它運行得像黃油(一貫!);

問題:但是,當我嘗試從已保存的遊戲中繼續玩遊戲時,遊戲運行不太穩定。具體來說,它會正常運行前幾圈,然後性能會急劇下降,直到它凍結我的電腦。請注意,這隻發生在戰鬥期間,而不是在菜單期間或任何其他時間。

有什麼關於Actionscript,我失蹤了?我使用內置的SharedObject類來保存cookie。我用來保存和加載數據的代碼如下(我也使用字節數組類)。

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; 
    } 
} 

我只是再次檢查了上面的代碼,並測試了一些更多的一些變化。如果它裝載1-3次,沒關係,但在此之後,每回合戰鬥中的表現會降低。我不知道ActionScript的技術內容是如何工作的,或者除了它的cookie和緩存中的資源之外,它如何節省資源。

誰能一些線索通過這也許會多一點到如何與Flash遊戲保存/加載在AS3完成?或者是「使用sharedObject」嗎?

回答

1

使用分析器(如Adobe scout)查看導致問題的原因。

如果我猜的話,那是因爲你(去)的序列化例程不正常工作,有內存泄漏。但是再次爭論這個問題,或者看看代碼,想知道可能是什麼問題,這是毫無意義的努力。使用一個分析器來確切地查看問題所在。

+0

我甚至不知道這個存在,謝謝。 –

+0

所以,我跑了它,它說「其他開銷」佔用了大量的處理能力,大大降低了幀率。你有沒有聽說過這樣的事情?或者開銷應該是多少? –

+0

@Naomi Dennis不,對不起。這可能是一個很好的後續問題。或者,也許你會在Adobe論壇中找到有用的東西,例如https://forums.adobe.com/thread/1114767 – null