![]() |
|
||||||||||
|
|||||
|
Регистрация: Mar 2007
Сообщений: 545
|
Цитата:
Цитата:
Загрузка зависит от характеристик ЦП. Для начала, как я уже писал, вынесите все обработки Event.ENTER_FRAME из ботов и пуль, например, в общий менеджер объектов. |
|
|||||
|
Регистрация: Oct 2009
Сообщений: 174
|
Вот пример реализации кеш менеджера:
http://www.ant-karlov.ru/TowerDefenc...e-obektov.html |
|
|||||
|
Регистрация: Apr 2011
Сообщений: 13
|
Спасибо, буду пробовать.
|
|
|||||
|
Регистрация: Apr 2011
Сообщений: 13
|
Доброго времени суток. Попробовал сделать менеджер объектов по образу и подобию http://www.ant-karlov.ru/TowerDefenc...e-obektov.html и как то у меня не получается. Вроде бы все летает и стреляет и процессор в порядке, но:
Сначала заполняется массив и с этим порядок, а потом когда начинается обращение к функции get() для извлечения объектов - на сцене они не появляются, только когда _currentIndex=-1, начинают создаваться новые объекты и появляться на сцене. Но ведь это не правельно! package { import flash.display.Sprite; import flash.display.Stage; public class SimpleCache { public var main:Main; protected var _targetClass:Class; protected var _currentIndex:int; public static var _currentIndexBot:int; public static var _currentIndexPuly:int; protected var _instances:Array; public function SimpleCache( targetClass:Class, initialCapacity:uint, nain) { main = nain; _targetClass = targetClass; // Базовый класс всех объектов _currentIndex = initialCapacity - 1; // Индекс текущего свободного объекта _instances = []; // Список всех объектов // Заполняем обойму for (var i:int = 0; i < initialCapacity; i++) { _instances[i] = getNewInstance(); } } protected function getNewInstance():Object { return new _targetClass(main); } public function get():Object { if (_currentIndex >= 0) { // Здесь должен извлекаться объект из массива, но на сцене он не появляется _currentIndex--; return _instances[_currentIndex + 1]; } else{ // Когда _currentIndex = -1, создаются новые объекты и они появляются на сцене return getNewInstance(); } } public function set(instance:Object):void{ _currentIndex++; if (_currentIndex == _instances.length) { _instances[_instances.length] = instance; } else{ _instances[_currentIndex] = instance; } } } } public class BotPuly extends Sprite { . . . private function self_destructionBotPuly() { if (botpulyphoto != null) { if (main.contenerBotPuly.contains(botpulyphoto)) { main.contenerBotPuly.removeChildAt(main.contenerBotPuly.numChildren - 1); //Здесь должен быть вызов set(instance:Object) только я не знаю как это правельно сделать } removeEventListener(Event.ENTER_FRAME, onEnterBotPuly); botpulyphoto = null; } } Последний раз редактировалось ndez; 14.06.2011 в 17:30. |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:57. |
|
|
« Предыдущая тема | Следующая тема » |
|
|