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

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

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

Регистрация: Jul 2010
Адрес: 59.939039, 30.315785
Сообщений: 65
Отправить сообщение для altermann с помощью ICQ Отправить сообщение для altermann с помощью Skype™
По умолчанию Ошибка addItemAt() в ArrayCollection

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

имеется массив:

public var xxx:ArrayCollection = new ArrayCollection();

пытаюсь добавить в него объект с помощью addItemAt()

var myObj:myType = new myType();
xxx.addItemAt(myObj, 1);

выдает ошибку:
Index '1' specified is out of bounds.

Понимаю, что это происходит потому, что в xxx нет ни одного элемента, нудно начинать добавлять с индекса 0, тогда все хорошо, но, возможно ли как-то начать заполнение массива не с нулевого, а первого, например, или пятого элемента?

гугление привело к такой статье: addItemAt() in ArrayCollection

попробовав сделать то, что там предлагают (может и не все попробовал, за плохим знанием английского), не пришел ни к какому результату.

А пробовал я такой способ объявления:
public var xxx:ArrayCollection = new ArrayCollection(new Array(size));

так же там предлагается использовать сортировку, но очень не хотелось бы это делать.

Может кто-нибудь сталкивался с таким вопросом?

Спасибо.

Старый 22.09.2010, 06:14
Korben вне форума Посмотреть профиль Отправить личное сообщение для Korben Найти все сообщения от Korben
  № 2  
Ответить с цитированием
Korben

Регистрация: Sep 2010
Сообщений: 14
если известен максимальный размер массива - заполни его предварительно пустыми значениями, а потом просто заполняй пустоту своими данными.

Старый 22.09.2010, 06:57
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 3  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
а чем обычный массив Array не подходит? Возможно я упускаю из вида какие-то преимущества ArrayCollection..

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

Регистрация: Jul 2010
Адрес: 59.939039, 30.315785
Сообщений: 65
Отправить сообщение для altermann с помощью ICQ Отправить сообщение для altermann с помощью Skype™
в принципе, массив вполне подходит, что-то я не подумал, что там такой проблемы может не быть, спасибо =)

но это еще не все, у меня используется <s:Group> в который я пытаюсь добавлять свои компоненты (основанные на <s:Group>) при помощи addElementAt() и там та же проблема. Массивом тут не заменишь =)
может есть варианты?

я вспомнил почему я использовал ArrayCollection, как минимум, мне надо удалять объекты из массива, не зная индекс, но теперь думаю, что индекс я знаю=) так что массив пока меня устраивает... То есть у ArrayCollection есть такие замечательные функции, как getItemIndex и removeItemAt.


Добавлено через 2 минуты
Цитата:
Сообщение от Korben Посмотреть сообщение
если известен максимальный размер массива - заполни его предварительно пустыми значениями, а потом просто заполняй пустоту своими данными.
пробовал, честно, но появляется другая ошибка, не могу сейчас сказать какая точно, но суть примерно такая: "не могу работать с объектом null" или ссылается он на объект null, не помню.
Да и количество элементов, в общем-то, не известно заранее. Известно только максимальное количество элементов, но их может быть и меньше


Последний раз редактировалось altermann; 22.09.2010 в 12:51.
Старый 22.09.2010, 14:41
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 5  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Цитата:
я вспомнил почему я использовал ArrayCollection, как минимум, мне надо удалять объекты из массива, не зная индекс, но теперь думаю, что индекс я знаю=) так что массив пока меня устраивает... То есть у ArrayCollection есть такие замечательные функции, как getItemIndex и removeItemAt.
Вообще то в обычном массиве это тоже без проблем можно делать:
getItemIndex - это indexOf()
removeItemAt - splice( index, 1 )

И потом, вы можете пользоваться обычным массивом, а потом, при необходимости, из него уже создавать ArrayCollection.


Последний раз редактировалось i.o.; 22.09.2010 в 19:41.
Старый 22.09.2010, 14:58
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 6  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
у меня используется <s:Group> в который я пытаюсь добавлять свои компоненты (основанные на <s:Group>) при помощи addElementAt() и там та же проблема. Массивом тут не заменишь =) может есть варианты?
А как вы себе это представляли? Это как строить дом: построили первый этаж, потом оставили пустоту и построили сразу 8-й. Единственное что вы можете, вклинить еще один этаж между уже существующими.
Насчет ArrayCollection. Старайтесь избегать использования этого класса, он слишком тяжелый для "повседневных" задач. Единственный случай когда его следует использовать, это если есть необходимость автоматически фильтровать данные.

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

Регистрация: Jul 2010
Адрес: 59.939039, 30.315785
Сообщений: 65
Отправить сообщение для altermann с помощью ICQ Отправить сообщение для altermann с помощью Skype™
Цитата:
Сообщение от i.o. Посмотреть сообщение
Вообще то в обычном массиве это тоже без проблем можно делать:
getItemIndex - это indexOf()
removeItemAt - splice( index, 1 )
СПАСИБО!!!! =)))

Добавлено через 1 минуту
Цитата:
Сообщение от alatar Посмотреть сообщение
А как вы себе это представляли? Это как строить дом: построили первый этаж, потом оставили пустоту и построили сразу 8-й. Единственное что вы можете, вклинить еще один этаж между уже существующими.
Насчет ArrayCollection. Старайтесь избегать использования этого класса, он слишком тяжелый для "повседневных" задач. Единственный случай когда его следует использовать, это если есть необходимость автоматически фильтровать данные.
Спасибо за разъяснение. В общем-то я придумал как это сделать. Вся проблема в том, что у меня два разных компонента и непонятно какой на каком месте будет. Поэтому я сделал еще один промежуточный компонент, им заполняю основной Group при инициализации, а в нем уже подключаю нужный мне компонент в нужное время.

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

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

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


 


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


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