Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Sprite с 5000 полигонами: тормоза при наведении курсора (http://www.flasher.ru/forum/showthread.php?t=107068)

LinuxVideo 25.01.2008 10:46

Sprite с 5000 полигонами: тормоза при наведении курсора
 
Есть примерно такая конструкция:
Код:

ss=new Sprite();
sss=ss.graphics;

...

white(counter<5000){
xx=somedata();
yy=somedata();

if (...)(sss.beginFill();}

sss.moveTo(xx,yy);
sss.lineTo(xx,yy);

if (...)(sss.endFill();}

}

Т.е. программно создается спрайт, а потом в него запихивается примерно 5000 погигонов (отдельных фигур с заливкой), есть немного линий и кривых. Все в 2D.
Все это безобразие должно шустро анимироваться.
Если поставить low quality и отключить масшабирование, то рисуется довольно шустро, fps много не бывает, но анимация идет нормально, можно сказать плавно. Пока идет отрисовка, то загрузка CPU под 100%, как отрисовка закончилась - 0%.

Но стоит только провести курсором над этим спрайтом, так загрузка опять под 50-100%! Никаких событий от спрайта не слушаю. CacheAsBitmap включал. Выкидывал вообще все Listener - не помогло. Вопрос: как решить проблему в загрузкой CPU? А то хотелось бы слушать события мышки от самой сцены (клики, движения по всему экрану, координаты сам обработаю), но из-за тормозов сцена практически неуправляема, события если и приходят, то с большим опозданием.

DRAGOnoid 25.01.2008 11:38

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

а на счёт мышки - тут проц загружает не листенер флешки как ты подумал а Операционка. она ж тоже должна обрабатывать потоки от железки преобразовывать в координаты считать что куда да как и т.д. )

etc 25.01.2008 11:54

mouseEnabled & mouseChildren?

LinuxVideo 25.01.2008 12:27

> если полигоны внутри спрайта движутся то CacheAsBitmap только ухудшит ситуацию.

А можно двигать полигоны? Как? Я просто при отрисовке нового кадра clear() делаю. Как бы нарисовал, а потом стер. Да и не думаю, что будет легче, ведь все вершины пересчитываются. Попробую отключить кеширование. Хотя там в любом случае рисуется через двойную буфферизацию :(


> проц загружается в основном при обработке графики, так что если у тебя много альфа каналов или много движущихся объектов - проц загружается просто ацки.

Альфа не используется, все непрозрачно (разве что антиалиасинг на окантовке)
В момент движения мыши отрисовка уже не идет.


> а Операционка. она ж тоже должна обрабатывать потоки от железки преобразовывать в координаты считать что куда да как и т.д. )

Обычно ей хватает на это менее 1%


> mouseEnabled & mouseChildren?

Попробую отлючить, спасибо. А получению событий от самой сцены не повредит? Мне глобально события ловить охота.

etc 25.01.2008 12:40

Глобально и от сцены чем-то отличается? :)

DRAGOnoid 25.01.2008 14:26

покажи хоть что рисуешь... может вообще там подход изначально неправильный.

Freeeeeeeman 27.01.2008 00:18

У меня подобная проблема.
Мувик, в нем сложная протрейсенная из .png-шек анимация. Достаточно пять таких мувиков на сцене и fps не поднимается выше 14.

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

BlooDHounD 27.01.2008 02:00

динамически рисовать битмапку каждого кадра, а потом показывать то что надо

Freeeeeeeman 27.01.2008 11:31

Всмысле каждый кадр cacheAsBitmap? Я пробовал - непомогает.

BlooDHounD 27.01.2008 11:46

нет. всмысле каждый каждый кадр битмап.


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

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