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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

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

Регистрация: Aug 2002
Адрес: Limassol, Cyprus
Сообщений: 89
Отправить сообщение для Krisha с помощью ICQ
По умолчанию FlashMX. Вывод ассоциативного массива.

Пытаюсь заполнить массив, в первом кадре ролика пишу:

UserAnswers = new Array();

далее в ролике при нажатии определенной кнопки пишу:

on (release)
{
_root.UserAnswers[this._name] = 1;
}

Значения присваиваются верно, но при трейсе массива я не вижу его структуры, просто выводятся значения элементов, можно как-то вывести не только значения, но и ключи, нечто вроде такого:

$key => $value

?


Последний раз редактировалось Krisha; 26.12.2003 в 14:10.
Старый 26.12.2003, 16:10
Mage Lord вне форума Посмотреть профиль Отправить личное сообщение для Mage Lord Найти все сообщения от Mage Lord
  № 2  
Mage Lord
 
Аватар для Mage Lord

Регистрация: Aug 2001
Адрес: Александрия Невская
Сообщений: 70
Отправить сообщение для Mage Lord с помощью ICQ
UserAnswers = new Object();

И все тебе будет.

Обращение к элементу такое: UserAnswers.Key или UserAnswers["Key"]

Опрос списка:

for (Name in UserAnswers) {
trace(Name+" "+UserAnswers[Name]);
}
__________________
Avete, alieni, nos morituri vos sperminus

Старый 26.12.2003, 16:43
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 3  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
Цитата:
Оригинал написал(а) Mage Lord
UserAnswers = new Object();

И все тебе будет.
это не совсем то :)

по большому счету абсолютно по барабану как именно объявить переменную - как объект или как массив. обращения типа UserAnswers["Key"] будут работать по-любому...

2Krisha
если в массиве есть хоть один элемент, ключ которого не числовой, то не будет работать свойство Array.length, а следовательно и все методы, которые на этом свойстве завязаны. вернее - работать то оно будет, но не будет учитывать элементы с ассоциативными ключами. совсем. а так - не важно как именно объявить такой объект.

еще одна особенность - если объявить ассоциативный массив как new Array, то будет работать операция toString, но выводить она будет только элементы без ассоциативных ключей. (см. пример)

Код:
// не-ассоциативные ключи
a = [1, 2, 3];
// ассоциативный ключ
a.abc = 4;
b = a.toString();
trace(a);
trace(b);
// перебор всего что есть внутри объекта
for (i in a) {
	trace(i+" : "+a[i]);
}


Последний раз редактировалось Nox Noctis; 26.12.2003 в 16:47.
Старый 26.12.2003, 16:59
Mage Lord вне форума Посмотреть профиль Отправить личное сообщение для Mage Lord Найти все сообщения от Mage Lord
  № 4  
Mage Lord
 
Аватар для Mage Lord

Регистрация: Aug 2001
Адрес: Александрия Невская
Сообщений: 70
Отправить сообщение для Mage Lord с помощью ICQ
Угу. Моя голова - мой пепел. Можно и массивом задавать. Но как-то это не по-флешерски.

UserAnswers = new Array();
UserAnswers[0] = 0;
UserAnswers["A"] = 1;
UserAnswers["B"] = 1;
UserAnswers["C"] = 1;
UserAnswers["D"] = 1;
UserAnswers[1] = 0;
trace(UserAnswers.length);

возвращает 2.

Переменные:
Variable _level0.UserAnswers = [object #1, class 'Array'] [
0:0,
1:0,
A:1,
B:1,
C:1,
D:1
]

Вообще-то все логично. Либо что-то где-то как-то, либо я не понял вопроса.
__________________
Avete, alieni, nos morituri vos sperminus

Старый 26.12.2003, 18:20
Krisha вне форума Посмотреть профиль Отправить личное сообщение для Krisha Найти все сообщения от Krisha
  № 5  
Krisha

Регистрация: Aug 2002
Адрес: Limassol, Cyprus
Сообщений: 89
Отправить сообщение для Krisha с помощью ICQ
Nox Noctis
Спасибо за подробное объяснение, из вышеизложенного сделал вывод, что лучше хранить данные так:

myArray[0] = array ("A","1");
myArray[1] = array ("B","1");
myArray[2] = array ("C","0");
myArray[3] = array ("D","0");

Старый 26.12.2003, 18:29
Mage Lord вне форума Посмотреть профиль Отправить личное сообщение для Mage Lord Найти все сообщения от Mage Lord
  № 6  
Mage Lord
 
Аватар для Mage Lord

Регистрация: Aug 2001
Адрес: Александрия Невская
Сообщений: 70
Отправить сообщение для Mage Lord с помощью ICQ
Если Array.length - критично, то да.
__________________
Avete, alieni, nos morituri vos sperminus

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

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

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


 


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


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