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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 24.05.2011, 18:41
vivado вне форума Посмотреть профиль Отправить личное сообщение для vivado Найти все сообщения от vivado
  № 1  
Ответить с цитированием
vivado

Регистрация: Aug 2010
Сообщений: 282
По умолчанию Проблемы с программированием "инвентаря"

Всем привет,
Прошу гуру о помощи, уже третий день никак преодолеть не могу одну весчь.
В общем есть несколько предметов которые можно будет помещать в любую из ячеек т.н. инвентаря (типа как в РПГ) Все перемещается прекрасно, только вот никак не могу записать условие "если ячейка занята, то предмет в нее не добавляется", чтоб нельзя было класть в одну ячейку по два и более предмета.
Вот код...
Первый кадр:
Код AS1/AS2:
//Обозначаю что ячейки 1,2,3,4,5,6 - пустые
Empty1="0";
Empty2="0";
Empty3="0";
Empty4="0";
Empty5="0";
Empty6="0";
Второй кадр:
На нем находятся
Предметы (у меня портфели) - 6 мувиков с линками Portfel1, Portfel2...Portfel6
для перетаскивания.
На каждый мувик повешен код
Код AS1/AS2:
on (press) {  //Переход к функции для начала перетаскивания
toStart(Portfel1);
}
on (release) { //Переход к функции для окончания перетаскивания
toStop(Portfel1);
}
На том же кадре находятся Мувики-ячейки с линками box1,box2,box3...box6 в которые будут вкладываться портфели.

На сам кадр вешаю код:
Код AS1/AS2:
stop(); //Остановка кадра
 
function toStart(NameP){ //Начало переноса предмета
startDrag (NameP);
if (box1.hitTest(_root._xmouse,_root._ymouse,false)){ Empty1="0";}; //Освобождаем ячейку 1 (если предмет в ней)
if (box2.hitTest(_root._xmouse,_root._ymouse,false)){ Empty2="0";}; //Освобождаем ячейку 2 (если предмет в ней)
if (box3.hitTest(_root._xmouse,_root._ymouse,false)){ Empty3="0";}; //Освобождаем ячейку 3 (если предмет в ней)
if (box4.hitTest(_root._xmouse,_root._ymouse,false)){ Empty4="0";}; //Освобождаем ячейку 4 (если предмет в ней)
if (box5.hitTest(_root._xmouse,_root._ymouse,false)){ Empty5="0";}; //Освобождаем ячейку 5 (если предмет в ней)
if (box6.hitTest(_root._xmouse,_root._ymouse,false)){ Empty6="0";}; //Освобождаем ячейку 6 (если предмет в ней)
}
 
function toStop(NamePortfel){ //При отпускании предмета
if (box1.hitTest(_root._xmouse,_root._ymouse,false)){ //Проверка находится ли портфель над ячейкой 1 (box1)
		NameP=NamePortfel;
		ItemInBoxX=259; ItemInBoxY=180; //Координаты предмета в ячейке
		//Проверяем пустая ли ячейка 1 и если пустая то переходим к функции SelectBox
	if (Empty1="0"){ Empty1="1"; SelectBox(NameP,ItemInBoxX,ItemInBoxY,"box1",Empty1)}
		//если ячейка не пустая то переходим к функции GoItemToStart
	else if (Empty1="1"){ GoItemToStart(NameP,"box1")}
		//вывод данных для отладки при Empty=1 ячейка заполнена при Empty=0 - пуста
infoBox=" box1:"+Empty1+" box2:"+Empty2+" box3:"+Empty3; trace (infoBox);
infoBox2=" box4:"+Empty4+" box5:"+Empty5+" box6:"+Empty6; trace (infoBox2);
};
 
if (box2.hitTest(_root._xmouse,_root._ymouse,false)){
		NameP=NamePortfel;
		ItemInBoxX=332; ItemInBoxY=180;
	if (Empty2="0"){ Empty2="1"; SelectBox(NameP,ItemInBoxX,ItemInBoxY,"box2",Empty2)}
	else if (Empty2="1"){ GoItemToStart(NameP,"box2")}
 
infoBox=" box1:"+Empty1+" box2:"+Empty2+" box3:"+Empty3; trace (infoBox);
infoBox2=" box4:"+Empty4+" box5:"+Empty5+" box6:"+Empty6; trace (infoBox2);
};
 
if (box3.hitTest(_root._xmouse,_root._ymouse,false)){
		NameP=NamePortfel;
		ItemInBoxX=405;	ItemInBoxY=180;
	if (Empty3="0"){ Empty3="1"; SelectBox(NameP,ItemInBoxX,ItemInBoxY,"box3",Empty3)}
	else if (Empty3="1"){ GoItemToStart(NameP,"box3")}
		infoBox=" box1:"+Empty1+" box2:"+Empty2+" box3:"+Empty3; trace (infoBox);
		infoBox2=" box4:"+Empty4+" box5:"+Empty5+" box6:"+Empty6; trace (infoBox2);
};
 
if (box4.hitTest(_root._xmouse,_root._ymouse,false)){
		NameP=NamePortfel;
		ItemInBoxX=259; ItemInBoxY=253,5;
	if (Empty4="0"){ Empty4="1"; SelectBox(NameP,ItemInBoxX,ItemInBoxY,"box4",Empty4)}
	else if (Empty4="1"){ GoItemToStart(NameP,"box4")}
		infoBox=" box1:"+Empty1+" box2:"+Empty2+" box3:"+Empty3; trace (infoBox);
		infoBox2=" box4:"+Empty4+" box5:"+Empty5+" box6:"+Empty6; trace (infoBox2);
};
 
if (box5.hitTest(_root._xmouse,_root._ymouse,false)){
		NameP=NamePortfel;
		ItemInBoxX=332;	ItemInBoxY=253,5; 
	if (Empty5="0"){ Empty5="1"; SelectBox(NameP,ItemInBoxX,ItemInBoxY,"box5",Empty5)}
	else if (Empty5="1"){ GoItemToStart(NameP,"box5")}
		infoBox=" box1:"+Empty1+" box2:"+Empty2+" box3:"+Empty3; trace (infoBox);
		infoBox2=" box4:"+Empty4+" box5:"+Empty5+" box6:"+Empty6; trace (infoBox2);
};
 
if (box6.hitTest(_root._xmouse,_root._ymouse,false)){
		NameP=NamePortfel;
		ItemInBoxX=405; ItemInBoxY=253,5;
	if (Empty6="0"){ Empty6="1"; SelectBox(NameP,ItemInBoxX,ItemInBoxY,"box6",Empty6)}
	else if (Empty6="1"){ GoItemToStart(NameP,"box6")}
		infoBox=" box1:"+Empty1+" box2:"+Empty2+" box3:"+Empty3; trace (infoBox);
		infoBox2=" box4:"+Empty4+" box5:"+Empty5+" box6:"+Empty6; trace (infoBox2);
};
};
 
function SelectBox (Portfel,ItemXBox,ItemYBox,Name_Box,EmptyBox){ //Перенос портфеля в нужную ячейку
Portfel._x=ItemXBox;
Portfel._y=ItemYBox;
//info="координаты: x "+ItemXBox+ " y "+ItemYBox+" Портфель: "+NameP;
info="Портфель добавлен в ячейку "+Name_Box;
trace (info);
stopDrag ();
}
 
function GoItemToStart(NamePortfel,NameBox){ //Если ячейка занята то переносим портфель в координаты 0,0
	ItemX=0;
	ItemY=0;
	infoempty="Ячейка "+NameBox+" занятa";
	trace (infoempty);
	NamePortfel._x=ItemX;
	NamePortfel._y=ItemY;
//stopDrag ();
}
Скорее всего много лишнего написал но по другому пока до меня не дошло как сделать, наверняка можно все упростить.

Прошу помощи ибо я сам практически спекся
(Желательно на AS 2.0 ибо я только еще учусь)

вот ссылка на исходник: itemmm.rar

Создать новую тему   Часовой пояс GMT +4, время: 15:25.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
dragDrop , hittest , перетаскивания
Опции темы
Опции просмотра

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

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


 


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


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