Показать сообщение отдельно
Старый 26.07.2007, 15:26
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 4  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Да, еще на онРелизы надо добавить, что если все хиттесты отрицательные, клип возвращается на свое положение, чтоб не валялся тупо где попало
Ну и по-уму бы надо все в одну функцию записать, а не копировать действия для каждого клипа. Ладно их тут три, а если пятнадцать?

////////////////////////// апдейтед /////////////////////////////

в общем у меня вот так сокращенно получилось для трех клипов
(можно этот код прямо в тот пример вставить вместо прежнего)

Код:
var dragged_x=null   //  здесь будем записывать координаты
var dragged_y=null   //  клипа перед тем как его тащить
Num = 3              //  количество клипов всего, маска их имени - mc_#_mc
for(n=1; n<Num+1; n++){  // по циклу перебираем мувики и вешаем ролловер-функции
	_root['mc_'+n+'_mc'].onPress = function(){          // при нажатии
	this.swapDepths(_root.getNextHighestDepth());   // ставим выше всех
	this._alpha = 50                 // делаем полупрозрачным
	_root.dragged_x=this._x          // записываем исходные координаты
	_root.dragged_y=this._y
	this.startDrag();                // разрешаем тащить
	}
	_root['mc_'+n+'_mc'].onRelease = _root['mc_'+n+'_mc'].onReleaseOutside = function(){
	this._alpha = 100
	Drop(this);                          // при отпускании - функция Дроп
	}
}//end for
///////////////////////////////////////////////////////
function Drop(clip:MovieClip){
	clip.stopDrag();            //  останавливаем таскалку
	not1 = not2 = not3 = false  // флаги удачности хиттеста
	clip!=mc_1_mc ? clip.hitTest(mc_1_mc) ? Replace(clip, mc_1_mc) : not1=true : not1=true;
	clip!=mc_2_mc ? clip.hitTest(mc_2_mc) ? Replace(clip, mc_2_mc) : not2=true : not2=true;
	clip!=mc_3_mc ? clip.hitTest(mc_3_mc) ? Replace(clip, mc_3_mc) : not3=true : not3=true;
	 // если ни с кем не пересеклись - отправляем клип на прежнее место
	(not1 & not2 & not3) ? Replace(clip, clip) : null;
}
///////////////////////////////////////////////////////
function Replace(sourceclip:MovieClip, clip:MovieClip){
	sourceclip._x = clip._x;    // присваиваем нашему клипу координаты
	sourceclip._y = clip._y;    // того клипа, с которым он пересекся
	clip._x = _root.dragged_x;  // а этот клип отправляем на исходные
	clip._y = _root.dragged_y;  // координаты нашего клипа
	}
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 27.07.2007 в 13:37.