
Код AS3:
// элементы массива Fact перетаскиваются на области из массива Frame,
// проверка происходит в функции fun2
//нужно чтоб на одно место прилипал только один элемент,
//а другой, в случаи попадания, прилипал в другую свободную ячейку
//массив элементов
var Fact: Array = new Array(Fact_1, Fact_2, Fact_3, Fact_4, Fact_5, Fact_6, Fact_7, Fact_8, Fact_9, Fact_10, Fact_11, Fact_12);
//массив полей на которые элементы перетаскиваются
var Frame: Array = new Array(frame_01, frame_02, frame_03, frame_04, frame_05, frame_06, frame_07, frame_08, frame_09, frame_10, frame_11, frame_12, frame_13, frame_14, frame_15, frame_16, frame_17, frame_18);
// массивы координат элементов Frame
var X: Array = new Array(158, 471, 784);
var Y: Array = new Array(88, 151, 214.95, 278.45, 341.95, 405.45);
//цикл для всех элементов
for(i = 0; i < Fact.length; i++)
{
Fact[i].addEventListener(MouseEvent.MOUSE_DOWN, fun1);
Fact[i].addEventListener(MouseEvent.MOUSE_UP, fun2);
}
function fun1 (e:MouseEvent):void
{
e.currentTarget.startDrag();
}
function fun2 (e:MouseEvent):void
{
for(i = 0; i < 6; i++)
{
if(e.currentTarget.hitTestObject(Frame[i]))
{
e.currentTarget.x = X[0];
e.currentTarget.y = Y[i];
}
else if(e.currentTarget.hitTestObject(Frame[i+6]))
{
e.currentTarget.x = X[1];
e.currentTarget.y = Y[i];
}
else if(e.currentTarget.hitTestObject(Frame[i+12]))
{
e.currentTarget.x = X[2];
e.currentTarget.y = Y[i];
}
}
e.currentTarget.stopDrag();
}