Показать сообщение отдельно
Старый 13.09.2011, 00:30
Alex626 вне форума Посмотреть профиль Отправить личное сообщение для Alex626 Найти все сообщения от Alex626
  № 1  
Ответить с цитированием
Alex626

Регистрация: Sep 2010
Сообщений: 167
По умолчанию Сложные операции над клипами со вложенными циклами

Здравствуйте!

Я никак не могу решить одну задачу, связанную с моей программой. У меня нарисована сетка, вроде шахматной доски, и на этой сетке в каждой ячейке может располагаться один объект (клип). Все клипы ставятся динамически, заполняя ячейки слева-направо, сверху-вниз. Позиция каждого клипа вычисляется по функции, в зависимости от порядкового номера. Клипы можно удалять с сетки.

Проблема заключается в следующем: нужна функция, находящая свободную ячейку на сетке, и возвращающая порядковый номер этой клетки.

Я делал так: брал 2 вложенных цикла. Первый вычисляет координаты ячейки, второй, вложенный, для этих координат перебирает все клипы на доске. Казалось всё просто. Но я не знаю, как вывести первое подходящее значение из под 2х циклов. Приведу свой идиотский код:

Код AS1/AS2:
getNextFreeSlot = function()
{
	var num=0;
	for(var i=0;i<=LastIndex;i++) //LastIndex - номер последнего добавленного элемента
	{
		 var checkX = GetSlotPosX(i); //функция возвращает координату X
		 var checkY = GetSlotPosY(i); //функция возвращает координату  Y
 
		 for(var j=0;j<=LastIndex;j++)
		 {
			 var num1 = 0;
			 var mc:MovieClip = _root["myslot"+j];//все клипы имеют название вроде "myslot5"
			 if(mc._x == checkX && mc._y == checkY)
			 {
				 num1++;
			 }
			 else
			 {
				if(j==LastIndex &&num1==0)
				{
					num = i;
					break;
				}
			 }
		 }//end for j
 
	} //end for i
	return num;
 
}
Основные вопросы - как выходить сразу из 2х циклов, как всё таки найти клетку, которой не соответствует ни одна координата.. 5 дней переписывал функцию с нуля, ничего не работало как надо, мозг вскипел.. Помогите пожалуйста!