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

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

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

Регистрация: Jan 2009
Сообщений: 38
По умолчанию Как можно повысить производительность отрисовки?

Здравствуйте!

В приложении, которое я разрабатываю, есть необходимость использовать нестандартные курсоры. Для этого я использую просто мувиклип, координаты которого я меняю.

Проблема в том, что курсор ездит по поверхности, которая довольно часто перерисовывается. Там расположено три графика (по 1000 точек), которые могут перерисовываться раз в каждые 100мс + сверху графиков могут быть другие мувиклипы, положение которых также меняется каждые 100мс.

При такой перерисовке мой курсор начинает нещадно отставать от настоящего. Отстает на несколько сантиметров.

Есть ли способ ускорить отрисовку курсора?

И еще. Как я понимаю такие методы как lineTo, moveTo ничего не рисуют, а просто добавляются в очередь. Как можно засечь сколько занимает сама отрисовка?

Старый 05.02.2009, 17:43
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
updateAfterEvent

Старый 05.02.2009, 23:01
Kolan вне форума Посмотреть профиль Отправить личное сообщение для Kolan Найти все сообщения от Kolan
  № 3  
Ответить с цитированием
Kolan

Регистрация: Jan 2009
Сообщений: 38
__etc, правильно ли я понял, то вы имели ввиду метод экземпляра класса MouseEvent (хотя такой же есть еще у KeyboardEvent и TimerEvent)? И, если это так, то я должен вызывать этот метод после изменения координат моего курсора.

Правильно понял?

PS
Кстати, я пробовал заменить ручное присвоение координат на startDrag(), то есть в этом случае перемещением управляла сама среда, и эффект был такой же.

А какие есть средства профилировани для флеша?

Старый 05.02.2009, 23:17
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Подпишитесь на событие MOUSE_MOVE, в нём вызывайте метод updateAfterEvent у пришедшего события.

Старый 05.02.2009, 23:31
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 5  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Мне в голову пришла адская идея, мб поможет. Сделайте буферизацию!

Как я себе это представляю:

Имеется спрайт, который на сцене не лежит. В этом спрайте рисуются графики, причём не одним куском, а по частям, с распределением во времени. Т.е. например если нужно рисовать 1000 точек каждые 100мс, рисуется по 100 точек каждые 10мс. Это позволит более равномерно распределить нагрузку по времени. Когда график в спрайте нарисован полностью, он отрисовывается в битмап, который лежит на сцене.

Ещё можно попробовать написать рисование графиков в растре, BitmapData.lock() в помощь. Но тут я не знаю, будет ли оно работать быстрее.
__________________
тонкий тролль, осеянный благодатью

Старый 06.02.2009, 01:10
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 6  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
GAIKER, а может проще использовать updateAfterEvent?

Старый 06.02.2009, 11:34
Kolan вне форума Посмотреть профиль Отправить личное сообщение для Kolan Найти все сообщения от Kolan
  № 7  
Ответить с цитированием
Kolan

Регистрация: Jan 2009
Сообщений: 38
__etc, с updateAfterEvent стало заметно быстрее, только вот от курсора стали оставаться «запчасти»:


Причем это происходит, когда прорисовка подложки, о которой я говорил в сабже, не делается вообще.

Как можно избав иться от «запчастей»? И самое главное, откуда они берутся?


Последний раз редактировалось Kolan; 06.02.2009 в 12:05.
Старый 06.02.2009, 12:26
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Ну это надо вас спросить, откуда они берутся.

Старый 06.02.2009, 13:07
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 9  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
BlooDHounD, если проц загибается, то updateAfterEvent не поможет. Или я чего-то не понимаю?
__________________
тонкий тролль, осеянный благодатью

Старый 06.02.2009, 14:07
Kolan вне форума Посмотреть профиль Отправить личное сообщение для Kolan Найти все сообщения от Kolan
  № 10  
Ответить с цитированием
Kolan

Регистрация: Jan 2009
Сообщений: 38
__etc, я с этим курсором кроме изменения координат ничего не делаю.

Вот весь код маус мува:
Код AS3:
private function onMouseMove(e:MouseEvent):Void 
	{		
		var p: Point = globalToLocal(new Point(e.stageX, e.stageY));
		_mouseCursor.xPos = p.x;
		_mouseCursor.yPos = p.y;
 
		/*Заставить флеш перерисоваться. 
		 * Это позволит курсору двигаться заметно быстрее.*/
		e.updateAfterEvent();
	}

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

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

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


 


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


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