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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 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 дней переписывал функцию с нуля, ничего не работало как надо, мозг вскипел.. Помогите пожалуйста!

Старый 14.09.2011, 12:46
lumaca вне форума Посмотреть профиль Отправить личное сообщение для lumaca Найти все сообщения от lumaca
  № 2  
Ответить с цитированием
lumaca

Регистрация: Sep 2009
Сообщений: 61
Может быть проще создать массив со списком ячеек и искать по нему?

Старый 14.09.2011, 18:06
Alex626 вне форума Посмотреть профиль Отправить личное сообщение для Alex626 Найти все сообщения от Alex626
  № 3  
Ответить с цитированием
Alex626

Регистрация: Sep 2010
Сообщений: 167
Да я в общем хотел работать без массивов, именно с объектами.

Я уже решил проблему - просто вместо вложенного цикла я сделал отдельную функцию, которая возвращает в цикл данные. Но всё равно хотелось бы узнать как работать со сложными структурами циклов, как завершать один из вложенных циклов.

Старый 08.10.2011, 21:44
Доктор Глюк вне форума Посмотреть профиль Отправить личное сообщение для Доктор Глюк Найти все сообщения от Доктор Глюк
  № 4  
Ответить с цитированием
Доктор Глюк
[+1 03.02.12]
 
Аватар для Доктор Глюк

Регистрация: Jul 2007
Адрес: Благовещенск на Амуре
Сообщений: 22
Thumbs up да просто ж всё)

я обычно делаю так:

Код AS1/AS2:
for(i=0;i<100;i++){
	b=false;
	for(n=0;n<100;n++){
		if((i==50)&&(n==50)){
			b=true;break
		}
	}
	if(b){break}
}
trace(i+":i   n:"+n)
__________________
даёш кликопробегом по иконам

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

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

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


 


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


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