Прошу о помощи, никак преодолеть не могу преодолеть одну вещь...
В общем есть несколько предметов которые можно будет помещать в любую из ячеек т.н. инвентаря (типа как в РПГ)
Мувик у меня из двух кадров
Первый кадр:
Код
//Обозначаю что ячейки с 1 по 6 пустые
var Empty:Array = [null,0,0,0,0,0,0]
var Empty:Array = [null,0,0,0,0,0,0]
Второй кадр:
На нем находятся предметы (у меня портфели) - 6 мувиков с линками Portfel1, Portfel2...Portfel6 для перетаскивания.
На каждый мувик повешен код
Код
on (press) { //Переход к функции для начала перетаскивания
toStart(Portfel1);
}
on (release) { //Переход к функции для окончания перетаскивания
toStop(Portfel1);
}
toStart(Portfel1);
}
on (release) { //Переход к функции для окончания перетаскивания
toStop(Portfel1);
}
На том же кадре находятся Мувики-ячейки с линками box1,box2,box3...box6 в которые будут вкладываться портфели.
На сам 2 кадр вешаю код:
Код
stop(); //Остановка кадра
function toStart(NameP){ //Функция переноса предмета
startDrag(NameP); //Включаем перенос предмета
for (var i=1; i<6; i++){
//Проверяем находится ли предмет над ячейкой
if (this["box"+i].hitTest(_root._xmouse,_root._ymouse,false)){
if (Empty[i]=="1"){ Empty[i]="0"; } //Присваиваем ячейке статус "свободна" (Empty[i]=0)(если предмет забираем из нее)
}
}
}
function toStop(NameP2){ //Отпускаем переносимый предмет
for ( var a=1; a<6; a++){
//Проверка находится ли предмет над одной из ячеек
if (this["box"+a].hitTest(_root._xmouse,_root._ymouse,false)){
//если находится то переходим к функции добавления предмета в ячейку Empty="0" означает что ячейка пуста Empty="1" - с предметом
if (Empty[a]=="0"){ Empty[a]="1"; AddToBox(NameP2,["box"+a])}
//иначе обращаемся к функции возвращающей предмет на его начальное положение
else if (Empty[a]=="1"){ GoToStart(NameP2,["box"+a])}
}
/*-------------------------------------------------------------------------------*/
//Вот тут не могу догнать как сделать, мне нужно чтобы предмет при отпускании вне ячейки
//обращался к функции, это условие полюбас выполняется (наверное из-за того что находится в цикле
//если предмет не над ячейкой то переносим его в начальное положение
else { GoToStart(NameP2,["box"+a])}
/*-------------------------------------------------------------------------------*/
}
}
function AddToBox (NameP3,NameBox){ //Перенос предмета в нужную ячейку
//Координаты предметов в ячейках
if (NameBox=="box1"){ var ItemInBoxX:Number=259; ItemInBoxY=180; } //Координаты предмета в 1 ячейке
...
else if (NameBox=="box6"){ ItemInBoxX=405; ItemInBoxY=253; } //Координаты предмета в 6 ячейке
/*-------------------------------------------------------------------------------*/
//Почему то величины ItemInBoxX и ItemInBoxX не задаются или задаются как то неправильно,
//пробовал выводить их через Number(ItemInBoxX) и задавать в виде
//var ItemInBoxX:Number=259 один фиг не работает :(
//Помещаем предмет в ячейку
NameP3._x=ItemInBoxX;
NameP3._y=ItemInBoxY;
/*-------------------------------------------------------------------------------*/
info="портфель "+NameP3+" добавлен в:"+NameBox+" Х="+ItemInBoxX+" Y="+ItemInBoxY; trace (info);
stopDrag();
}
function GoToStart(NameP4,NameBox2){
//Начальные координаты предметов - задам потом
NameP4._x=0;
NameP4._y=0;
if (NameP4=="Portfel1"){ ItemX=0; ItemY=0; } //Начальные координаты 1 предмета
...
else if (NameP4=="Portfel6"){ ItemX=0; ItemY=0; } //Начальные координаты 6 предмета
//Помещаем предмет в его начальные координаты
NameP4._x=ItemX;
NameP4._y=ItemY;
info2="Ячейка "+NameBox2+" занятa"+" Возвращаем "+NameP4+" в Х="+ItemX+" Y="+ItemY; trace (info2);
stopDrag();
}
function toStart(NameP){ //Функция переноса предмета
startDrag(NameP); //Включаем перенос предмета
for (var i=1; i<6; i++){
//Проверяем находится ли предмет над ячейкой
if (this["box"+i].hitTest(_root._xmouse,_root._ymouse,false)){
if (Empty[i]=="1"){ Empty[i]="0"; } //Присваиваем ячейке статус "свободна" (Empty[i]=0)(если предмет забираем из нее)
}
}
}
function toStop(NameP2){ //Отпускаем переносимый предмет
for ( var a=1; a<6; a++){
//Проверка находится ли предмет над одной из ячеек
if (this["box"+a].hitTest(_root._xmouse,_root._ymouse,false)){
//если находится то переходим к функции добавления предмета в ячейку Empty="0" означает что ячейка пуста Empty="1" - с предметом
if (Empty[a]=="0"){ Empty[a]="1"; AddToBox(NameP2,["box"+a])}
//иначе обращаемся к функции возвращающей предмет на его начальное положение
else if (Empty[a]=="1"){ GoToStart(NameP2,["box"+a])}
}
/*-------------------------------------------------------------------------------*/
//Вот тут не могу догнать как сделать, мне нужно чтобы предмет при отпускании вне ячейки
//обращался к функции, это условие полюбас выполняется (наверное из-за того что находится в цикле
//если предмет не над ячейкой то переносим его в начальное положение
else { GoToStart(NameP2,["box"+a])}
/*-------------------------------------------------------------------------------*/
}
}
function AddToBox (NameP3,NameBox){ //Перенос предмета в нужную ячейку
//Координаты предметов в ячейках
if (NameBox=="box1"){ var ItemInBoxX:Number=259; ItemInBoxY=180; } //Координаты предмета в 1 ячейке
...
else if (NameBox=="box6"){ ItemInBoxX=405; ItemInBoxY=253; } //Координаты предмета в 6 ячейке
/*-------------------------------------------------------------------------------*/
//Почему то величины ItemInBoxX и ItemInBoxX не задаются или задаются как то неправильно,
//пробовал выводить их через Number(ItemInBoxX) и задавать в виде
//var ItemInBoxX:Number=259 один фиг не работает :(
//Помещаем предмет в ячейку
NameP3._x=ItemInBoxX;
NameP3._y=ItemInBoxY;
/*-------------------------------------------------------------------------------*/
info="портфель "+NameP3+" добавлен в:"+NameBox+" Х="+ItemInBoxX+" Y="+ItemInBoxY; trace (info);
stopDrag();
}
function GoToStart(NameP4,NameBox2){
//Начальные координаты предметов - задам потом
NameP4._x=0;
NameP4._y=0;
if (NameP4=="Portfel1"){ ItemX=0; ItemY=0; } //Начальные координаты 1 предмета
...
else if (NameP4=="Portfel6"){ ItemX=0; ItemY=0; } //Начальные координаты 6 предмета
//Помещаем предмет в его начальные координаты
NameP4._x=ItemX;
NameP4._y=ItemY;
info2="Ячейка "+NameBox2+" занятa"+" Возвращаем "+NameP4+" в Х="+ItemX+" Y="+ItemY; trace (info2);
stopDrag();
}