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

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

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

Регистрация: Apr 2009
Адрес: Moskva
Сообщений: 20
Question Тормоза над нарисованной решеткой

Привет всем! подскажите плиз, возникла ситуация:
мне нужно двигать объект поверх нарисованной решетки.
я один раз рисую решетку, потом просто двигаю поверх объект...
если шаг решетки большой, то тормозов не возникает, если шаг маленький, то при перемещении объекта за мышью, движение начинает тормозить...
в тестовом примере я специально умножаю предельные координаты сетки на 5 (y0*5), так проблема более явно проявляется. в моей задаче иногда необходимо в бэкграунде рисовать разные достаточно сложные сетки и все начинает тормозить..

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

в чем может затык, как можно ускорить процесс, что я не так делаю ?


Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
	addedToStage="_addedToStage()">
<mx:Script>
	<![CDATA[
		private function _addedToStage(): void{
			_updateGrid(10);
			stage.addEventListener(MouseEvent.MOUSE_MOVE, _mouseMove);
		}
 
		private function _updateGrid(n: int): void{
			var y0: Number = 0;
			var x0: Number = 0;
			var x1: Number = stage.width;
			var y1: Number = stage.height;
 
			_canvas.graphics.clear();
			_canvas.graphics.lineStyle(0,0xff0000, 0.1);
 
			for (var i: int=0; i < x1/n; i++){
				_canvas.graphics.moveTo(i*n, -y0*5);
				_canvas.graphics.lineTo(i*n,  y1*5);
			}
			for (var i: int=0; i < y1/n; i++){
				_canvas.graphics.moveTo(-x0*5, i*n);
				_canvas.graphics.lineTo( x1*5, i*n);
			}
		}
 
		private function _buttonClick(event: Event): void{
			_updateGrid(2);
		}
 
		private function _mouseMove(event: MouseEvent): void{
			var p: Point = _canvas.globalToLocal(new Point(event.stageX, event.stageY));
			moved.x = p.x;
			moved.y = p.y;
		}
 
	]]>
</mx:Script>
	<mx:Canvas id="_canvas" top="0" left="0" right="00" bottom="0">
		<mx:Canvas x="210" y="289" width="67" height="61" backgroundColor="#FF0000" id="moved">
		</mx:Canvas>
	</mx:Canvas>
	<mx:Button label="Button" right="0" top="0" click="_buttonClick(event)"/>
 
</mx:Application>

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

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

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


 


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


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