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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.11.2010, 14:29
elzone вне форума Посмотреть профиль Отправить личное сообщение для elzone Найти все сообщения от elzone
  № 11  
Ответить с цитированием
elzone
[+3 02.07.08]
 
Аватар для elzone

Регистрация: Sep 2004
Сообщений: 86
re -De-

подскажи пожалуйста - как добавлять объекты в дерево DisplayObject и сохранять соответствие этого объекта и его id

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

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Я это примерно так вижу:
Код AS3:
var dict = new Dictionary(true);
dict[id]=new YouObject(type, x, y);
 
function change(id:String, x, y):Boolean{
	if(dict[id]){
		dict[id].setParams(x, y);
		return true;
	}else{
		return false;
	}
}
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 10.11.2010, 15:12
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 13  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Добавлять с помощью addChild.
сохранять соответствие типа
Код AS3:
//где-то там переменная класса или статик может даже - хранилка
public var list:Object = new Object();
//собсно сохранять
list[ID] = obj;
//нетривиальная (для новичков и не читающих доки) вещь - как удалять это соответствие
delete list[ID];
Ну в общем dimarik не написал addObject, а вы не знаете, как работать с Object? бида
Код AS3:
function addObject(id:String, obj:CustomObject ):void{
    if(id in list) {
        //фигня случилась, уже есть ваш айдишник, забыли удалить или ещё где логика страдает
        throw new Error("duplicate id");
    }
    list[id] = obj;
}
TanaTiX, а где там сохранение, зачем всё остальное и почему Dictionary, а не Object и не Array?
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

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

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Не Array и не Vector, т.к. проще обратиться по имени, чем перебирать все элементы до поиска нужного.
Почему не Object - мне кажется, что Dictionary более специфичен для указанной задачи. Тут, собственно, нет уверенности, скорее личное предпочтение. К тому же Object использует в качестве ключа исключительно строку и возможность использования слабых ссылок. Если есть другие аргументы - было бы интересно.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 10.11.2010, 16:38
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 15  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Цитата:
Почему не Object - мне кажется, что Dictionary более специфичен для указанной задачи.
Object - строковой хэш, Dictionary - объектный. Тут не может быть "более" специфичных, подходит всегда только один. (в плане правильности подхода - не стоит ради строкового хэша делать объектный)


Последний раз редактировалось Psycho Tiger; 10.11.2010 в 16:41.
Старый 10.11.2010, 19:09
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 16  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
А Array/Vector - это в некотором роде числовой мап, а айдишник у нас что? Кстати, операция узнавания значения массива по индексу - она быстрее всех этих ваших хешэй (я, кстати, думаю, что индусы там дерево хорошо если сбалансированное сделали, а не хэш). Ну у него минусы, в общем, если индекс большой, то и массив большой. Хотя есть подозрение, что таки Array он на самом деле не массив, а мап и он память вроде не жрёт тоннами, если завести в нём 1 эл-т с номером 100000000.
Dictionary лучше рассматривать как ссылочный мап, т.е. ключ - ссылка, хотя он допилен до общего мапа. Потому он тяжелей. Установка использования слабых ссылок, кстати, просто не работает для тех эл-тов Dictionary, где ключ - "простой" обьект (на ваше счастье, потому что GC иначе сожрал бы связь).
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Vector - это в некотором роде числовой мап
Вектор, это таки, далеко не мап

Добавлено через 7 минут
Разница в скорости тоже не особо впечатляет: http://jacksondunstan.com/articles/855
60мс на 1000000 операций, можно не принимать в расчет.


Последний раз редактировалось alatar; 10.11.2010 в 19:51.
Старый 10.11.2010, 19:46
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 18  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
А что такое мап?
Код AS3:
не стоит ради строкового хэша делать объектный
можно поподробней, в чем в данном случае минус Dictionary? И когда тогда его использовать имеет смысл?
Цитата:
Кстати, операция узнавания значения массива по индексу - она быстрее всех этих ваших хешэй
В данном случае у нас нет индекса, т.е. нужно сравнить все элементы с некоторым значением.
Цитата:
Dictionary лучше рассматривать как ссылочный мап, т.е. ключ - ссылка, хотя он допилен до общего мапа. Потому он тяжелей.
Цитата:
Установка использования слабых ссылок, кстати, просто не работает для тех эл-тов Dictionary, где ключ - "простой" обьект (на ваше счастье, потому что GC иначе сожрал бы связь).
А вот на счет этого можно поподробней?
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 10.11.2010, 20:00
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 19  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
-De-, Вы знаете как массивы хранятся в флеш плеере? Я не знаю. Догадки тут неуместны - если говорить о лоу-левеле за ширмой abc кода, то и говорить о нём. Короче, программиста не должны волновать низкоуровневые особенности кода, в который он транслируется.

Мы имеем что имеем. Array можно рассматривать как надежный массив (вектор) указателей, с оговорками к простым типам. Vector - аналогично. Только оно нам надо? Меня как-то не очень волнует какой технологией реализуется что-то нативное.

Цитата:
Хотя есть подозрение, что таки Array он на самом деле не массив, а мап и он память вроде не жрёт тоннами, если завести в нём 1 эл-т с номером 100000000.
С точки зрения юзера задав 100000 элемент 99999 создадутся, потому что length будет говорить 1000000. А хэлп гласит
Цитата:
Неотрицательное целое число, которым задается количество элементов в массиве.
Цитата:
можно поподробней, в чем в данном случае минус Dictionary? И когда тогда его использовать имеет смысл?
Когда нужен хэш, где ключами являются объекты.
Цитата:
В данном случае у нас нет индекса, т.е. нужно сравнить все элементы с некоторым значением.
Почему же, есть хэш-функции свёртки чего-то там в число, которое будет являться индексом. Я не очень знаю как это дело работает, но там не банальное сравнение.

Цитата:
А вот на счет этого можно поподробней?
Цитата:
Установка использования слабых ссылок, кстати, просто не работает для тех эл-тов Dictionary, где ключ - "простой" обьект (на ваше счастье, потому что GC иначе сожрал бы связь).
Простые типы передаются по значению, в контексте AS3 говорить о ссылках на простой тип вообще говорить бессмысленно.

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

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Т.е. в данном случае, что Dictionary, что Object - один хрен?
Цитата:
Почему же, есть хэш-функции свёртки чего-то там в число, которое будет являться индексом. Я не очень знаю как это дело работает, но там не банальное сравнение.
А есть ссылочки на тему?
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

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

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

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


 


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


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