|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Профайлер (скаут) мгновенно показывает такие вещи, без гаданий где затык.
|
|
|||||
Регистрация: May 2013
Адрес: (0, 0)
Сообщений: 176
|
Да, я знаю спасибо. Он как раз таки показывает нагрузку на рендер.
Последний раз редактировалось zCHESNOKz; 17.12.2015 в 20:10. |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
а какого размера битмапа?
|
|
|||||
Регистрация: May 2013
Адрес: (0, 0)
Сообщений: 176
|
примерно 100х100 px
Добавлено через 50 минут Цитата:
[frameRae:45] (все теже картинки 100х100) - FPS при 50 объектах почти не проседает. - при 100 объектах, 22-37 короче среднее FPS 30. Мне подходит вообщем. Как у меня это получилось: Я просто сделал анимацию (вращение+scale) в самом флеше. А самое главное, что анимация должна быть типа "Анимация движения" (при "Классической анимации движения" падает FPS) + если вы анимируете символ в котором есть маски (или возможно еще что то типа слоев, и других вложенных клипов) то для анимации обращайте данный клип в еще один клип, и производите трансформации уже с ним. Почему в клип, а не в Графику? Потому, что при обращении в графику тоже падает FPS. Даже не помогает преобразование в ключи. Надеюсь что так работает не только у меня, а мое решение тоже еще кому то поможет! --- --- --- Еще я выявил, что FPS начинает падать, когда поверх или снизу данного клипа размещается еще какой то клип. То есть если они друг друга перекрывают. Это особенности рендера Flash? Последний раз редактировалось zCHESNOKz; 17.12.2015 в 22:56. |
|
|||||
Это костыльное решение. Да и вообще не решение, по сути. FPS все равно падает. И не важно до какого значения.
Скорее всего графика там у тебя векторная. Или в самих картинках, или в масках. Но тут точно какая-то дезинформация. Вот тут вообще 200 вращаются, и ни сколько FPS не проседает. Можно и 300 сделать, будет то же самое 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, false, 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()); } } } |
|
|||||
Регистрация: May 2013
Адрес: (0, 0)
Сообщений: 176
|
Это растр. Импортирую в библиотеку swc только растр. Из вектора - маска, для каждого изображения.
Изображение которое я вращаю - свечение. Потом в определенное время я включаю visible = true - красной зоны (изображение ). Оно как раз перекрывает свечение, ну или под ним. Не суть. И начинает падать FPS. Позже попробую показать флеху и код. --- --- --- Вот флешка и исходники. Убрал векторные маски - ничего не изменилось, на FPS никак не повлияло. Дело просто в унылом рендере флеша. код: public function Scketch() { for (var i:int = 0; i < 75; i++) { addChild(box = new Box()); box_arr.push(box); box.y = 175; box.x = i * 9 + 50; //box.x = 100; } stage.addEventListener(MouseEvent.CLICK, ClickL); } protected function ClickL(e:MouseEvent):void { for (var i:int = 0; i < box_arr.length; i++) box_arr[i].Bar(); } и public function Box() { addChild(area = new fon_plant()); area.visible = false; addChild(glow = new fon_b()); } public function Bar():void { swicher = false; area.visible = false; } public function Foo():void { swicher = true; area.visible = true; } Последний раз редактировалось zCHESNOKz; 18.12.2015 в 10:51. |
|
|||||
Не надо гнать на флеш) я тебе привел код и файл, к котором двести картинок вращается. Запусти его у себя на компе. Если будет стабльно 30 фпс, значит дело в твоем коде. Если будет провисать, значит дело в компе. У меня и посерьезнее рендер бывал без провисаний, причем намного серьезнее
Цитата:
п.с. Открыть исходник не могу. Нет у меня Flash CC |
|
|||||
Регистрация: May 2013
Адрес: (0, 0)
Сообщений: 176
|
Я погорячился, прости Flash! Запустил, - твоя флеха не проседает. Комп в норме. Та и правда, глупо что я напоролся на такую маленькую проблему. Но за то очень весомую.
Как думаешь может посмотреть в сторону блиттинга, если проблема не решиться? Может поможет? Последний раз редактировалось zCHESNOKz; 18.12.2015 в 12:53. |
|
|||||
Просмотрел исходник, причина лагов ясна - НЕ нужно оборачивать растровую картинку в мувик и делать над ней анимацию во флеше, это вся причина лагов. Как исправить:
1) Добавлять готовую растровую картинку сразу на сцену, НИ В КОЕМ случает НЕ НУЖНО оборачивать её ни в какие мувиклипы. 2) Анимацию вращения и увеличения создавать программно. Итог: лагов не будет.
__________________
Я заклинаю вас действовать иначе. |
Часовой пояс GMT +4, время: 19:57. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|