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

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

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

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
По умолчанию Мышь и нагрузка на проц.

Дамы и господа, прошу совета/помощи, т.к. даже не знаю что искать и в какую сторону копать. В готовом приложении обнаружился баг (функционально практически не значимый, но достаточно существенный и неприятный). Описываю ситуацию:

Есть контейнер. В контейнер (пусть Базовый) грузится циклом значительное количество объектов (пусть Блоков), которые из себя представляют мелкие картинки (из самого приложения, не из вне), текстовые поля, спрайты с рамками (drawRectangle). Количество блоков может быть существенным (к примеру до 1000 и более, но более чем на пока 600 не тестирую). Ни на Блоки, ни на Базовый контейнер не подписаны никакие слушатели. Только на Базовый наложена маска. Проблема в том, что при наведении мышки на Базовый контейнер (справедливо поставить знак равенства с маской, если это важно) нагрузка на процессор увеличивается до 100%. Как только убираю нагрузка снижается до исходных значений. При этом на экране ничего не меняется (и не должно).
Собственно вопрос в том как победить рост нагрузки на проц и за счет чего это происходит?

ЗЫ. постарался наиболее подробно и полно описать проблему, если что-то нужно еще - дополню.
ЗЗЫ. проект коммерческий, и значительный по общему объему кода, поэтому с примерами кода не получится, увы
ЗЗЗЫ. Flash CS3.

Заранее спасибо, буду рад любым подсказкам.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 18.02.2010, 21:14
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 2  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
mouseEnabled, mouseChildren, не грузить 1к объектов одновременно.

Старый 18.02.2010, 21:29
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 3  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Psycho Tiger, первые 2 совета (хотя пожалуй только первый) позволили снизить нагрузку на проц до 80%. По поводу не грузить 1к - к сожалению не тот вариант. Точнее он возможен, но крайне не желателен. К тому же одновременно отображается (за счет маски) всего 4 объекта, ну может 6. Везде статика, никакой интерактивности и прочих наворотов.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 19.02.2010, 00:40
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 4  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
Везде статика, никакой интерактивности и прочих наворотов
Тогда можно программно скрыть то, что точно находится под маской.
То есть, если маска - это некая "кривая" (а еще есть слово "произвольная", но тогда будет совсем как в учебнике) фигура, то нужно получить прямоугольник, ее описывающий (getBounds() f.e.???) и удалить из списка отображения все объекты, лежащие за пределами этого прямоугольника и не пересекающиеся с ним.

UP
А еще можно отрисовать все что есть на сцене в адын_балшой_бытмап. Или в 2. Или по блокам.
Количество детей уменьшится само собой. А если этой битмапе еще и сглаживание убрать (и двигать маску/битмапу только на целое число пикселей) - тут оно должно взлететь! =)
__________________
...вселенская грусть


Последний раз редактировалось gloomyBrain; 19.02.2010 в 00:44.
Старый 19.02.2010, 02:36
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 5  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
gloomyBrain маска и есть прямоугольник. Какой тогда смысл в getBounds?
Цитата:
в адын_балшой_бытмап
Тоже не подходит. Сейчас, на эатпе тестов там нет ничего лишнего, но в дальнейшем туда будут грузиться фотки при клике по которым должно что-то происходить. Как вариант - наплодить такое же количество более простых Блоков только в местах предполагаемых кликов. Но разве это достойный вариант? ИМХО больше на убогую заплатку тянет. Или я не прав?
Я вот не могу понять почему нагрузка увеличивается именно при наведении мыши, даже при учете совета Psycho Tiger. Поведение проигрывателя для меня по прежнему остается загадкой. Такое впечатление, что там сидит миллион слушателей и отлавливает какое-то мышиное событие, но откуда ему (слушателю) взяться, если я его не назначаю...
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 19.02.2010, 10:41
proxiServer вне форума Посмотреть профиль Отправить личное сообщение для proxiServer Найти все сообщения от proxiServer
  № 6  
Ответить с цитированием
proxiServer
 
Аватар для proxiServer

Регистрация: Jun 2006
Сообщений: 400
В событиях mouseMove, если используете stopPropagation, попробуйте убрать. Мне однажды это помогло избавится от похожей(да собственно точно такой же) проблемы.

Старый 19.02.2010, 13:54
dmitriev вне форума Посмотреть профиль Отправить личное сообщение для dmitriev Найти все сообщения от dmitriev
  № 7  
Ответить с цитированием
dmitriev
 
Аватар для dmitriev

Регистрация: Jun 2007
Адрес: Челябинск
Сообщений: 303
Отправить сообщение для dmitriev с помощью ICQ
1. Не отображайте объекты которые не попадают под маску.
2. Вместо маски можно использовать scrollRect, если не ошибаюсь он работает побыстрее.
__________________
O God! The Aftermath.

Старый 19.02.2010, 15:23
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 8  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Тогда лучше в один большой битмап, смотреть куда кликнули, вычислять на какую фотку и загружать большую фото.

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

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

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


 


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


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