2016-10-15 2 views
0

Итак, я работал над проектом в AS3, и я столкнулся с еще одним своеобразным поведением.Ресурсы ActionScript 3 и Runtime

Background: Это повернутая игра. Я оптимизировал его на прошлой неделе, и теперь он работает как масло (последовательно!);

Вопрос: Однако, когда я пытаюсь продолжить игру из сохраненной игры, она работает менее последовательно. В частности, он будет запускать первые несколько поворотов, как правило, тогда он начнет резко ухудшаться в производительности, пока он не заморозит мой компьютер. Обратите внимание, что это происходит только во время битвы, а не во время меню или в любое другое время.

Есть ли что-то в отношении Actionscript, которое мне не хватает? Я сохраняю игру с помощью файлов cookie, используя встроенный класс SharedObject. Код, который я использую для сохранения и загрузки данных, приведен ниже (я также использую класс массива байтов).

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, и он находится в кеше.

Может ли кто-нибудь пролить свет на это, возможно, немного перейдя к тому, как сохранить/загрузить флеш-игры в AS3? Или «использовать sharedObject» все, что есть?

ответ

1

Используйте профайлер (например, скаут Adobe), чтобы узнать причину проблемы.

Если бы я должен был догадаться, это связано с тем, что ваши (де-) процедуры сериализации не работают должным образом и имеют утечку памяти. Но снова спорить об этом или смотреть на код, задаваясь вопросом, что может быть проблемой, является бессмысленным делом. Используйте профилировщик, чтобы точно увидеть, в чем проблема.

+0

Я даже не знал, что это существовало, спасибо. –

+0

Итак, я запустил его, и он сказал, что «другие накладные расходы» занимают огромное количество вычислительной мощности, резко снижая частоту кадров. Вы когда-нибудь слышали об этом? Или какие накладные расходы должны быть? –

+0

@Naomi Dennis Нет, извините. Это может быть хорошим последующим вопросом. Или, может быть, вы найдете что-то полезное на форумах Adobe, например здесь: https://forums.adobe.com/thread/1114767 – null