![]() |
Sprite с 5000 полигонами: тормоза при наведении курсора
Есть примерно такая конструкция:
Код:
ss=new Sprite();Все это безобразие должно шустро анимироваться. Если поставить low quality и отключить масшабирование, то рисуется довольно шустро, fps много не бывает, но анимация идет нормально, можно сказать плавно. Пока идет отрисовка, то загрузка CPU под 100%, как отрисовка закончилась - 0%. Но стоит только провести курсором над этим спрайтом, так загрузка опять под 50-100%! Никаких событий от спрайта не слушаю. CacheAsBitmap включал. Выкидывал вообще все Listener - не помогло. Вопрос: как решить проблему в загрузкой CPU? А то хотелось бы слушать события мышки от самой сцены (клики, движения по всему экрану, координаты сам обработаю), но из-за тормозов сцена практически неуправляема, события если и приходят, то с большим опозданием. |
если полигоны внутри спрайта движутся то CacheAsBitmap только ухудшит ситуацию.
проц загружается в основном при обработке графики, так что если у тебя много альфа каналов или много движущихся объектов - проц загружается просто ацки. 5000 объектов вообще жесть! если не секрет это ты куда столько собрался использовать? а на счёт мышки - тут проц загружает не листенер флешки как ты подумал а Операционка. она ж тоже должна обрабатывать потоки от железки преобразовывать в координаты считать что куда да как и т.д. ) |
mouseEnabled & mouseChildren?
|
> если полигоны внутри спрайта движутся то CacheAsBitmap только ухудшит ситуацию.
А можно двигать полигоны? Как? Я просто при отрисовке нового кадра clear() делаю. Как бы нарисовал, а потом стер. Да и не думаю, что будет легче, ведь все вершины пересчитываются. Попробую отключить кеширование. Хотя там в любом случае рисуется через двойную буфферизацию :( > проц загружается в основном при обработке графики, так что если у тебя много альфа каналов или много движущихся объектов - проц загружается просто ацки. Альфа не используется, все непрозрачно (разве что антиалиасинг на окантовке) В момент движения мыши отрисовка уже не идет. > а Операционка. она ж тоже должна обрабатывать потоки от железки преобразовывать в координаты считать что куда да как и т.д. ) Обычно ей хватает на это менее 1% > mouseEnabled & mouseChildren? Попробую отлючить, спасибо. А получению событий от самой сцены не повредит? Мне глобально события ловить охота. |
Глобально и от сцены чем-то отличается? :)
|
покажи хоть что рисуешь... может вообще там подход изначально неправильный.
|
У меня подобная проблема.
Мувик, в нем сложная протрейсенная из .png-шек анимация. Достаточно пять таких мувиков на сцене и fps не поднимается выше 14. Как лучше всего делать анимацию, допустим, персонажа игры? Потому что трейс изображения слишком уж жирно да и увесисто для анимации персонажей. |
динамически рисовать битмапку каждого кадра, а потом показывать то что надо
|
Всмысле каждый кадр cacheAsBitmap? Я пробовал - непомогает.
|
нет. всмысле каждый каждый кадр битмап.
|
может кто пример выложит того что он там шаманит?
|
Опиши подробнее, что ты хочешь изобразить с помощью этих 5000 полигонов. Возможно реализация задачи у тебя в корне неверна.
|
> может кто пример выложит того что он там шаманит?
unstable.servebeer.com/m/ Верхний слайдер - поворот Нижний или колесико мыши - маштаб Можно двигаться (драг энд дроп) с зажатым шифтом Анимацию пришлось выкинуть нафиг, пришлось много чем пожертвовать. Получилось далеко не то, чего бы хотелось. Зато рисуется в реалтайме! Эх, как я буду добавлять надписи и оверлеи... Снимать клики... А ведь и линии надо бы поменять на кривые безье, причем cubic, а не штатные quadratic. :( |
я ж говорю принцип изначально неправильный
во первых при масштабировании а точнее умеьшении карты дома и улицы убираются, а при увеличении показываются только те, которые попадают в зону экрана (считается математикой координат) чтобы крутить это всё конечно сложнее получится - а зачем ? ты хочешь сделать навигацию типа GPS для машин?? в общем тебе надо превратить это всё не в спрайт с кучей полигонов а спрайт с кучей объектов... и не 5000 а 50 ;) |
Вложений: 1
Да, можно дома убирать, эта функция уже есть, но закомментирована. Почему? А обсчет на "выбывание" тоже прилично ресурсов кушает, да и очень странно, когда что-то появляется-исчезает. Особенно при анимации зума прикольно выглядело. При общем плане надо не только убирать мелкие объекты, но и склеивать большие полигоны, полностью их пересчитывая. Быстрого алгоритма я не знаю. Можно попробовать раздуть базу, запихав в нее все уровни, но она и так 250кб, причем сейчас там объектов то практически нет, а линии - прямые. Далее, смотрим картинку. Ширина домов - пара пикселей, промежуток между ними - субпиксельный. Зато красиво и информативно. Именно из-за информативности не охота вырезать мелкие детали.
Крутить - не сложнее, оно сейчас крутит и неплохо. А хотелось бы как Google Earth, включая и 3D-наклон. Будет и GPS, и куча всего, включая интерактивные объекты. А у меня тупая проблема с отрисовкой. Как наносить текст на кривые - не представляю. Да, ссылку просмотрело 6 человек, а отписал только один... |
мне тоже интересно просто ;)
кстати я скоро сам напишу класс карт уж очень ты меня этим заинтересовал. ещё есть советы родились. во первых наверно не стоит рисовать линии в объектах - сам видешь когда делаешь зум по минимум. во вторых наложить слова просто - тебе всёравно придётся сделать базу объектов иначе теряется весь смысл.. и у объекта есть свои координаты - к им и привязываешь текст... я вообще вижу это так: у тебя один класс содержит координаты, размеры и данные типа текст с описанием объекта. ты размещаешь на карте куччу этих объектов в соответствии параметров.. сглаженного зума пока не получается.. однако надо потестить.. посути когда мы зумим мы обращаемся к бд которая возвращает XML объектов. ладно я думаю всёравно не понятно что я имею ввиду ) |
> кстати я скоро сам напишу класс карт уж очень ты меня этим заинтересовал.
Я тоже думал, что это просто. Вот через OpenGL рисовать несколько проще... > во первых наверно не стоит рисовать линии в объектах - сам видешь когда делаешь зум по минимум. А что делать на максимальной детализации? Выглядит не слишком красиво. Была идея динамической смены цвета/толщины, в зависимости от зума, но... Посмотрим... > во вторых наложить слова просто - тебе всёравно придётся сделать базу объектов иначе теряется весь смысл.. и у объекта есть свои координаты - к им и привязываешь текст... База уже есть. Координаты тоже. Проблема в отрисовке. В быстрой отрисовке. > у тебя один класс содержит координаты, размеры и данные типа текст с описанием объекта. > ты размещаешь на карте куччу этих объектов в соответствии параметров.. Дык у меня один спрайт сожрал кучу ресурсов, до классов пока дело не дошло... > посути когда мы зумим мы обращаемся к бд которая возвращает XML объектов. XML - пожиратель трафа. И зачем каждый раз лазить, если вся база весит 250кб (она сейчас вся сразу грузится) |
короче попробую написать свой класс. если что новое появится сообщю...
ещё появидась идея с зумом делать объекты прозрачным. а когда прозрачность падает до 0 вообще убирать.. но это только идея попробую посмотреть как будет на практике |
Когда ждать? ;)
ЗЫ: Люди, которые смотрят, вы бы тоже чего отписали :) Сегодня кто-то под Маком зашел - не тормозило? |
Вывалилось
Код:
TypeError: Error #1010: A term is undefined and has no properties. |
> Вывалилось
Ты под отладчиком запускал? Или куда оно вывалило? |
Для это не надо запускать отладчик - достаточно иметь дебаг версию плеера - как ты понял у меня тоже вывалился в самом начале эксепшн как и у _etc
|
Фиг с ним, с этим эксепшеном, все равно это даже на альфу не тянет, потом поправлю. Чего делать то?
|
ознакомтесь с объектной частью пакета ArcView - должно помочь понять, как правильно организовать работу с данными
|
Линку дайте
|
| Часовой пояс GMT +4, время: 12:05. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.