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

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

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

Регистрация: Apr 2011
Сообщений: 83
По умолчанию Найти индекс объекта в массиве?

Привет. Хотел спросить. Есть двумерный массив. В нем содержаться объекты. Объектами являются квадратики работающие как кнопки, на которые можно кликать. И которые выводятся визуально. Как мне при клике мышкой на любой квадратик ( который содержится в массиве ) узнать какой у этого квадратика индекс? Пробовал так
Код AS3:
for ( var i:uint = 0; i < arayV.length; i++ )
			{
				for ( var j:uint  = 0; j < arayV [ i ].length; j++ )
				{
					if ( arayV [ i ] [ j ] = this.boxGame )
					{
					trace ( "Go" );    // i первый элемент ассива 
					}
				}
			}
Но, весь массив заполнен этими квадратиками. А все они унаследованы от одного объекта, то получается что когда проверяется весь массив метод
Код AS3:
trace ( "Go" );
срабатывает для каждого квадратика массива, а должен только для того на который кликнули.

Старый 09.02.2012, 22:45
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 2  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
А если при создании квадратиков делать их наследниками некоего класса, и передавать индекс при создании соответствующих объектов? Тогда в обработчике это будет конструкция типа
Код AS3:
trace((e.target as Square).index);
И не надо будет при каждом клике весь массив лопатить.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 09.02.2012, 22:53
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 3  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
Никакое наследование тут ни причём. Объекты разные, значит при сравнении на == будет false
Код AS3:
if ( arayV [ i ] [ j ] = this.boxGame )
Приравниваение!
А нужно сравнение
Разве компилятор варнинг не кидает?
Код AS3:
if ( arayV [ i ] [ j ] == this.boxGame )
нужно

Добавлено через 3 минуты
А обрабатывать клик действительно лучше через таргет.
__________________
:)

Старый 09.02.2012, 23:07
elder_Nosferatu вне форума Посмотреть профиль Отправить личное сообщение для elder_Nosferatu Найти все сообщения от elder_Nosferatu
  № 4  
Ответить с цитированием
elder_Nosferatu
 
Аватар для elder_Nosferatu

Регистрация: Nov 2010
Адрес: 48° 55'N 24° 42'E GMT +2:00
Сообщений: 399
Записей в блоге: 1
Код AS3:
function clickHandler(event:MouseEvent):void {
	var btn:SomeClass = event.currentTarget as SomeClass; // Класс квадратика
	for (var i:uint = 0; i < arayV.length; i++) {
		var j:int = arayV.indexOf(btn);
		if (j != -1) {
			trace("Go: index[", i, j, "]");
		}
	}
}

Старый 09.02.2012, 23:07
pivnoibaron вне форума Посмотреть профиль Отправить личное сообщение для pivnoibaron Найти все сообщения от pivnoibaron
  № 5  
Ответить с цитированием
pivnoibaron
 
Аватар для pivnoibaron

Регистрация: Apr 2011
Сообщений: 83
Да. Действительно. Нужно == а Я поставил =

Старый 09.02.2012, 23:55
HardCoder вне форума Посмотреть профиль Отправить личное сообщение для HardCoder Найти все сообщения от HardCoder
  № 6  
Ответить с цитированием
HardCoder
 
Аватар для HardCoder

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
Вариант TanaTiX +1. Действительно, зачем весь массив дергать? Правда, наследование здесь ни при чем - главное, чтоб конечный "квадратик" имел свойство index:
Код AS3:
public var index:Array = [0, 0];
или
public var index:Vector.<uint> = new <uint>[0, 0];
или
public var index:Object; = {x:0, y:0};
__________________
Я мало чего умею, но зато хорошо умею учиться...

Старый 10.02.2012, 01:15
illuzor вне форума Посмотреть профиль Отправить личное сообщение для illuzor Найти все сообщения от illuzor
  № 7  
Ответить с цитированием
illuzor
 
Аватар для illuzor

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Цитата:
Сообщение от Aquahawk Посмотреть сообщение
Разве компилятор варнинг не кидает?
Выдаёт предупреждение, но компилит.

Старый 10.02.2012, 12:10
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 8  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
Я понимаю что компилит, но варнинги то читать нужно. И устранять. И как только появился один варнинг его сразу устранять.
__________________
:)

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

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

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


 


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


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