Показать сообщение отдельно
Старый 17.11.2014, 19:28
neonoviiwolf вне форума Посмотреть профиль Отправить личное сообщение для neonoviiwolf Найти все сообщения от neonoviiwolf
  № 1  
Ответить с цитированием
neonoviiwolf

Регистрация: Jun 2014
Сообщений: 558
По умолчанию Вектор в растр

Добрый день.
Возник вопрос по оптимизации, я сделал несколько мувиклипов в СС, в каждом мувики есть последовательность изображений, нарисованных в СС, как я понимаю это векторные рисунки, т.к. увеличив их в 50 раз, качество не пострадало. Во время запуска приложения создаётся два десятка копий мувиков, которые движутся по сцене и проигрываются, если увеличить количество, то начинаются просадки фпс, так же создаётся около 50 копий мувика статичных (только один кадр, но тоже движутся). Собственно возник вопрос, если всё это перевести в формат png, а затем запихнуть обратно в мувики (где проигрывается, то ряд картинок pbg) - это разгрузит ЦП? А то ещё много нужно добавить элементов, а уже притормаживает. Так же интересует реализация пула, собственно недавно программирую и понимаю как это должно быть, но не могу понять логику класса.

Если кто может, объясните построчно
Код AS3:
package 
{ 
    import flash.display.Sprite; 
 
    public final class SpritePool 
    { 
        private static var MAX_VALUE:uint; 
        private static var GROWTH_VALUE:uint; 
        private static var counter:uint; 
        private static var pool:Vector.<Sprite>; 
        private static var currentSprite:Sprite; 
 
        public static function initialize( maxPoolSize:uint, growthValue:uint ):void 
        { 
            MAX_VALUE = maxPoolSize; 
            GROWTH_VALUE = growthValue; 
            counter = maxPoolSize; 
 
            var i:uint = maxPoolSize; 
 
            pool = new Vector.<Sprite>(MAX_VALUE); 
            while( --i > -1 ) 
                pool[i] = new Sprite(); 
        } 
 
        public static function getSprite():Sprite 
        { 
            if ( counter > 0 ) 
                return currentSprite = pool[--counter]; 
 
            var i:uint = GROWTH_VALUE; 
            while( --i > -1 ) 
                    pool.unshift ( new Sprite() ); 
            counter = GROWTH_VALUE; 
            return getSprite(); 
 
        } 
 
        public static function disposeSprite(disposedSprite:Sprite):void 
        { 
            pool[counter++] = disposedSprite; 
        } 
    } 
}