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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 08.03.2011, 14:39
nOobCrafter вне форума Посмотреть профиль Отправить личное сообщение для nOobCrafter Найти все сообщения от nOobCrafter
  № 9  
Ответить с цитированием
nOobCrafter

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
я развил код из второго поста, мне именно такой подход не очень нравится, но имхо это лучше чем 100500 левых хендлеров. С учетом того что действия вообщем то однотипные можно определить динамические данные и дальше метода backF ходить не придется. Пример ниже:
Код AS3:
		import fl.transitions.Tween;
		import fl.transitions.easing.*;
 
		var moveBackX	: Tween;
		var moveBackY	: Tween;
		var pointsArr	:Array = [point1, point2, point3, point4];
		var placeArr	:Array = [placeLamp, placeAmpermetr, placeVoltmetr];
		var len			:int = placeArr.length;
		for (var i:int = 0; i < len; i++) 
			placeArr[i].visible = !visible;			// я правда не понял зачем
 
		var objectsArr	:Array = [lamp, ampermetr, voltmetr];
		len = objectsArr.length;
		for (i = 0; i < len; i++) 
			objectsArr[i].addEventListener(MouseEvent.MOUSE_DOWN, onObjectMouseDownHandler);
 
			stage.addEventListener(MouseEvent.MOUSE_UP, onStageMouseUpHandler);
 
		function onObjectMouseDownHandler(e:MouseEvent):void
		{
			e.currentTarget.startDrag();
		}
 
		function onStageMouseUpHandler(e:MouseEvent):void
		{
			var obj:Sprite = e.currentTarget as Sprite;
			var index:int = objectsArr.indexOf(obj);  // т.к. кодите в иде, то индекс можно было сохранить как св-во мувика, он всеравно динамический, но можно и так.
			if (index == -1) return;
			var point:Sprite = pointsArr[index];  // спрайты или что там?
			var place:Sprite = placeArr[index];  // спрайты или что там?
 
			new Tween(obj, "x", Strong.easeOut, obj.x, point.hitTestPoint(obj.x, obj.y) ? point.x : place.x, 0.5, true);
			new Tween(obj, "y", Strong.easeOut, obj.y, point.hitTestPoint(obj.x, obj.y) ? point.y : place.y, 0.5, true);
 
			obj.stopDrag();
		}
из всего этого видно что данный подход имеет очевидные плюсы, а вам мало того что пришлось бы руками подписываться на каждый хендлер, так еще и описывать его.


Последний раз редактировалось nOobCrafter; 08.03.2011 в 15:01.
Создать новую тему   Часовой пояс GMT +4, время: 13:46.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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