Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Почему так сильно падает FPS? Где вся производительность? (http://www.flasher.ru/forum/showthread.php?t=211958)

caseyryan 18.12.2015 22:15

Цитата:

1) Добавлять готовую растровую картинку сразу на сцену, НИ В КОЕМ случает НЕ НУЖНО оборачивать её ни в какие мувиклипы.
С чего бы это? Мувиклип это просто контейнер. Он никак не превратит растрову картинку в векторную. Причина лагов у него была в векторных масках. В моем файле тоже растровая картинка добавляется в контейнер, и это не приводит ни как каким лагам
Цитата:

2) Анимацию вращения и увеличения создавать программно.
То же не понятно как это может влиять на наличие лагов

zCHESNOKz 18.12.2015 22:32

Цитата:

Сообщение от Bletraut (Сообщение 1189764)
Просмотрел исходник, причина лагов ясна - НЕ нужно оборачивать растровую картинку в мувик и делать над ней анимацию во флеше, это вся причина лагов. Как исправить:
1) Добавлять готовую растровую картинку сразу на сцену, НИ В КОЕМ случает НЕ НУЖНО оборачивать её ни в какие мувиклипы.
2) Анимацию вращения и увеличения создавать программно.

Итог: лагов не будет.


Попробовал. Серьезно, ничего не изменилось.(

Bletraut 18.12.2015 22:32

Цитата:

С чего бы это? Мувиклип это просто контейнер. Он никак не превратит растрову картинку в векторную. Причина лагов у него была в векторных масках. В моем файле тоже растровая картинка добавляется в контейнер, и это не приводит ни как каким лагам
Зачем для битматы делать ещё один контейнер?

Цитата:

То же не понятно как это может влиять на наличие лагов
Если убрать флешевскую анимацию и сделать rotation += 10, то лаги исчезают

Добавлено через 39 секунд
Код AS3:

Попробовал. Серьезно, ничего не изменилось.(

Придется выложить исходник

Добавлено через 22 минуты
Все дело в альфа канале. Если убрать у картинок прозрачность, лаги пропадают. Проблема в этом.

Добавлено через 30 минут
Пример со спрайтами теперь жутко лагает. Всего лишь выставлена прозрачность.

Код AS3:

package {
        import flash.display.Bitmap;
        import flash.display.BitmapData;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.geom.Point;
 
        [SWF(frameRate = 30)]
        public class ImagesRotation extends Sprite {
 
                private var _allObjects:Array = [];
 
                public function ImagesRotation() {
 
                        for (var i:int = 0; i < 200; i++) {
                                var b:Bitmap = new Bitmap(new BitmapData(100, 100, true, Math.random() * 100000000));
                                var s:Sprite = new Sprite();
                                var pos:Point = getRandomPosition();
                                b.x        = -b.width >> 1;
                                b.y        = -b.height >> 1;
                                s.x        = pos.x;
                                s.y        = pos.y;
                                s.addChild(b);
                                addChild(s);
                                _allObjects.push(s);
                        }
                        addChild(new Stats());
                        addEventListener(Event.ENTER_FRAME, onEnterFrame);
                }
 
                private function onEnterFrame(e:Event):void {
                        for each (var sprite:Sprite in _allObjects) {
                                sprite.rotation += 20;
                        }
                }
                private function getRandomPosition():Point {
                        return new Point(stage.stageWidth * Math.random(), stage.stageHeight * Math.random());
                }
        }
 
}


zCHESNOKz 18.12.2015 23:21

Цитата:

Сообщение от Bletraut (Сообщение 1189771)
Все дело в альфа канале. Если убрать у картинок прозрачность, лаги пропадают. Проблема в этом.
[/as3]

Если честно то это вообще перебор. Если лаги берутся:
-от прозрачности;
-от векторных масок;
-от огромного[сарказм] количество клипов, 30 штук;
(возможно что еще и от длинных анимаций)

То ВСЯ суть заключается в этих особенностях нужной анимации. Я не могу просто взять и отказаться от прозрачности и забыть о такой классной фишке как маска. Мне все таки, что то подсказывает что все дело в рендере (с которым, не будем тыкать пальцами кто - не справляется), и к нему нужно найти правильный подход.

(Возможно это тоже имеет значение но, анимация медленная 5 сек./1 оборот, также и с scale)

Bletraut 18.12.2015 23:23

Лаги только от прозрачности.

caseyryan 18.12.2015 23:24

Цитата:

Сообщение от Bletraut (Сообщение 1189771)
Зачем для битматы делать ещё один контейнер?

Хотя бы для того, чтобы можно было легко сместить ее относительно точки трансформации. Или ты не ищешь легких путей и всегда вращаешь объекты через матрицы?


А вот с альфа каналом действительно тормозит сильнее

Bletraut 18.12.2015 23:25

Во всяком случае, прозрачность играет самую весомую роль.

Добавлено через 1 минуту
Цитата:

Сообщение от caseyryan (Сообщение 1189778)
Хотя бы для того, чтобы можно было легко сместить ее относительно точки трансформации. Или ты не ищешь легких путей и всегда вращаешь объекты через матрицы?

Я работаю с 3д, там только матрицы.

elder_Nosferatu 19.12.2015 12:52

В 2д тоже только матрицы. Вопрос кому их считать. И неужели во всем 3д не найдется места таком понятию, как контейнер ;) ?

Bletraut 19.12.2015 13:06

Цитата:

И неужели во всем 3д не найдется места таком понятию, как контейнер ?
А у контейнера что, нет матриц? Добавляя модель в дополнительную обертку мы получаем 2 преобразования матрицы вместо одного.

caseyryan 19.12.2015 14:37

При чем тут матрицы контейнера? ) Я не хочу работать с матрицами напрямую, когда можно легко поворачивать контейнер. Пусть пересчет матриц на себя берет комп.
Руководствуясь такой логикой, можно вообще на ассемблере писать. Какая разница, если результат один)


Часовой пояс GMT +4, время: 07:36.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.