Показать сообщение отдельно
Старый 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.