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

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

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

Регистрация: Jul 2009
Сообщений: 58
По умолчанию удаление элемента из компанента List, removeItem

Обыскал переискал,прочитал перечитал,так и не понял какой аргумент надо пихнуть в removeItem чтобы он удалил его, в данном примере я пытаюсь пихнуть ему имя из созданного ранее элемента aList.addItem({label:all_user[i], data:all_user[i]});

Код AS3:
if (msg.substring(0,18)=="send_client_logout"){
				var user_logout:Array = msg.substring(0,msg.indexOf(" ")).split("&");
				aList.removeItem(user_logout[1]);
				chatWindow.appendText(user_logout[1]);
                vScrollBar.update();
				}

Старый 06.08.2009, 20:43
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 2  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
вместо removeItem() нужно removeItemAt(), а индекс ищем.

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

Регистрация: Jul 2009
Сообщений: 58
я думал насчёт removeItemAt() но как мне получить индекс ??? как мне пробежаться по всем элементам и узнать их имена ?

Старый 06.08.2009, 21:31
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 4  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
Если уж точно никак ссылку на объект не достать, то:
Код AS3:
		private var arCol:ArrayCollection = new ArrayCollection();
		private function findName(name:String):int
		{
			var i:uint = arCol.length;
			while (i--)
			{
				if (arCol.getItemAt(i).name == name)
				{
					return i;
				}
			}
			return -1;
		}

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

Регистрация: Jul 2009
Сообщений: 58
сделал оп вашему принципу,не помогло(
Код AS3:
if (msg.substring(0,18)=="send_client_logout"){
				var user_logout:Array = msg.substring(0,msg.indexOf(" ")).split("&");
			    for (var aun:uint = aList.length;aun > 0;aun--)
			    {
				  if (aList.getItemAt(i).name == user_logout[1])
				  {
				   aList.removeItemAt(i);
				  }
			    }				
				chatWindow.appendText(user_logout[1]);
                vScrollBar.update();
				}

Старый 06.08.2009, 22:12
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 6  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
Мой способ находит индекс в ArrayCollection по свойству name, а у вас в каком свойстве имя записано?

Теперь лекция :
- код нужно не просто копировать.
- код нужно оформлять.

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

Регистрация: Jul 2009
Сообщений: 58
вот что у меня
Код AS3:
public var aList:List = new List();
aList.setSize(160, 125);
aList.move(29.3,39.4);
addChild(aList);
добавляю элемент в лист
Код AS3:
if (msg.substring(0,16)=="send_client_name"){	
  var nick:String = msg.substring(16,msg.indexOf("\n"));
  aList.addItem({label:nick, data:nick});
}
и как мне при таких дейтвиях получить индекс итема чтобы удалить?

Добавлено через 49 минут
я как бы уже сделал чтобы мне сервер посылал нужный индекс,так как серверу легче его вычислить а распарсить в клиенте не проблема. но если не трудно то на будущее интересно было бы узнать как в АС найти индекс.

Старый 07.08.2009, 11:11
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 8  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
перебором элементов контейнера.Обращение к объекту в АС всегда осуществляется либо прямо по ссылке, либо перебором(массив), других способов нет.

У нас есть List у которого в модели существует объект с полем label, и есть поле label обекта который мы должны удалить.

Идём в help:
для Flash IDE:
У листа есть методы:

getItemAt(index:int):Object;
removeItemAt(index:int):Object;
removeItem(value:Object):Object;

и свойство length

Т.е. мы можем получить по индексу объект модели.
начинаем перебирать от 0 до length-1 и сверять поле label с нам нужным значением.

Код AS3:
var i:int = length;
while (i--)
{
	if (list.getItemAt(i).label == userName)
	{
		// нашли, значит нужно его убить.
		list.removeItemAt(i);
		break;
	}
}

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

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

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


 


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


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