Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 14.08.2008, 18:59
gen4 вне форума Посмотреть профиль Отправить личное сообщение для gen4 Найти все сообщения от gen4
  № 1  
Ответить с цитированием
gen4

Регистрация: May 2006
Сообщений: 79
Arrow Графика: Быстродействие. Оптимизация.

Я только начал осваивать АС3. Прошу помочь с трюками касательно производительности отображения.

Задача - нарисовать узоры. очень детализированные узоры, очень много, с анимацией)

Алгоритм таков:
-генерируются объекты деревьев и их веток. Каждое дерево и ветка состоят из кусочков, пускай это будут точки для простоты.

-затем отрисовываю по 10 кусков каждого имеющегося дерева и ветки.

-в процессе отрисовки генерятся новые деревья.


Мое решение:
Каждый сет (10 кусков отдельно взятой ветки) я рисую в шейп.
Шейп addChild'ю к Sprite.
И на каждый ENTER_FRAME отрисовываю Sprite.

Получается довольно медленно.
Я делаю что-то криво?
Есть ли возможность ускорить процесс?

Возможно правильнее работать с BitmapData?

Спасибо

Старый 14.08.2008, 19:09
ramshteks вне форума Посмотреть профиль Отправить личное сообщение для ramshteks Найти все сообщения от ramshteks
  № 2  
Ответить с цитированием
ramshteks
 
Аватар для ramshteks

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
Цитата:
Возможно правильнее работать с BitmapData
вот это думаю должно вам помоч.

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

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

Старый 14.08.2008, 19:12
gen4 вне форума Посмотреть профиль Отправить личное сообщение для gen4 Найти все сообщения от gen4
  № 3  
Ответить с цитированием
gen4

Регистрация: May 2006
Сообщений: 79
Спасибо.
Интересует конкретика работы с графикой.

Старый 14.08.2008, 22:09
Яски вне форума Посмотреть профиль Отправить личное сообщение для Яски Найти все сообщения от Яски
  № 4  
Ответить с цитированием
Яски

блогер
Регистрация: May 2008
Адрес: (0, 10, 185) в локальной системе
Сообщений: 721
Записей в блоге: 6
Не создавайте, удаляйте часто объекты - используйте готовые экземпляры

Старый 15.08.2008, 08:38
Karmodi вне форума Посмотреть профиль Отправить личное сообщение для Karmodi Найти все сообщения от Karmodi
  № 5  
Ответить с цитированием
Karmodi

Регистрация: Jul 2008
Адрес: South of China
Сообщений: 11
Отправить сообщение для Karmodi с помощью ICQ
Приветсвую всех. У меня схожая проблема (возможно ее обсуждение поможет автору вопроса тоже ): в ролике создается большое количество объектов Shape, они помещаются в контейнер (при этом есть необходимость перемещать контейнер). Запуск профайлера показал что больше всего времени при перетаскивании всех объектов тратиться на обработку [mouseEvent]. (двигаю контейнер по Event.ENTER_FRAME путем изменения координат спрайта) . Более того при увеличении шейпов простое движение мышки (над роликом) приводит к заметной нагрузке процессора. Т.о. я пришел к выводу что все шейпы "следят" за мышкой.
Возможные варианты решения проблемы:
1) Замена на BitMap (только при перетаскивании, так как необходимо оставить возможность удаления шейпов по одному)
2) Удаление из списка отображения тех шейпов что вышли за пределы экрана.
3) Замена объектов собственным классом без "лишних" листенеров.

Поделитесь мыслями как в моей ситуации на ваш взгляд поступить лучше (как сделали бы вы) .
возможно ли просто отписать шейпы от неиспользуемых событий? (Этот вопрос отвалился ->mouseChildren,mouseEnabled ) - изменяем на false для контейнера с шейпами.
P.S. Прошу прощения что немного сумбурно, если что - могу конкретизировать и/или привести фрагменты кода.
Заранее всем спасибо.


Последний раз редактировалось Karmodi; 15.08.2008 в 10:07.
Старый 15.08.2008, 13:53
gen4 вне форума Посмотреть профиль Отправить личное сообщение для gen4 Найти все сообщения от gen4
  № 6  
Ответить с цитированием
gen4

Регистрация: May 2006
Сообщений: 79
Был проведен эксперимент:
на рабочую область 900х900 создаем битмап
затем на каждый кадр:
в 10.000-ом цикле ставим цветной пиксель.
после цикла прописовываем битмап.

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

теперь перед прорисовкой битмапа вставляем строчку - создание нового шейпа.
просто создание пустого шейпа, только и всего и смотрим как изменилась скорость прорисовки.

Старый 16.08.2008, 02:26
Яски вне форума Посмотреть профиль Отправить личное сообщение для Яски Найти все сообщения от Яски
  № 7  
Ответить с цитированием
Яски

блогер
Регистрация: May 2008
Адрес: (0, 10, 185) в локальной системе
Сообщений: 721
Записей в блоге: 6
Да mouseEnabled по умолчанию это зло.

Старый 18.12.2008, 11:21
klafuda_klalafu вне форума Посмотреть профиль Отправить личное сообщение для klafuda_klalafu Найти все сообщения от klafuda_klalafu
  № 8  
Ответить с цитированием
klafuda_klalafu

Регистрация: Aug 2004
Адрес: N. Novgorod
Сообщений: 127
Отправить сообщение для klafuda_klalafu с помощью ICQ
кстати делали карту города
http:/karta.kirov.ru
там я отрисовывал каждый раз кусочки карты. и двигал ее..
так вот
когда отрисовываем по матрице с большим масштабом все равно работает не так быстно как хотелось бы...
то есть что бы отрисовать битмапу с большим масштабом требуется заметное количество времени
может быть кто то решил трабл... в частности такой:
Есть обхект который необходимо перетаскивать... влево вправо... ну и все такое, так вот:
когда масштаб меньше 10 то работает все замечательно в какой то момент масштабирования начинаются тормоза
кто нить сталкивался с проблеммой ?
как решить ?
на счет отрисовки куска карты не вариант, я уже так делал все равно тормозит (хотя может быть не так сильно однако может быть есть решение которое ваще проблемму решит ?)
http://flyagaric.hop.ru

Создать новую тему Ответ Часовой пояс GMT +4, время: 10:00.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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