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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Закрытая тема
Старый 12.04.2014, 01:17
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 1  
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
По умолчанию Уникальный идентификатор объекта

Код AS3:
 var object1:Object = new Object();
 var object2:Object = new Object();
 if(object1 == object2){};
Когда делают так, то говорят, что проверяется равенство объектов по ссылкам.
А существует ли возможность, получить значение этих ссылок? Или возможно у объектов есть
какие-то другие уникальные идентификаторы, как у DO instanceName ?
Объясню для чего - ключи String и Object, очень долго добавляются, в отличии от int
и первое что пришло в голову, создать по идентификатору числовой ключ. Но наверное, это ещё одна безумная мысль)

Старый 12.04.2014, 03:54
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 2  
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Да иди ты,
Цитата:
ключи String и Object, очень долго добавляются, в отличии от int
лесом. Твои мысли пыль! Сделай проект сначала хоть один, где будет данная связь , а потом задавай вопрос. Ни в одном проекте, данная связь не появится.
__________________
Марк Tween

Старый 12.04.2014, 04:09
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 3  
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Цитата:
Да иди ты, лесом. Твои мысли пыль!
В прошлый раз, когда Вы советовали отрубить руки, я после прочтения того поста,
решил посмотреть, что у Вас интересного есть в блоге. Да, я прочел несколько статей и
подчерпнул из них то, чего ещё не касался. А ещё я увидел, как Вам советовали отрубить руки.
На лицо синдром жертвы и я бы не удивился, если и в турпоход Вас тоже посылали
Цитата:
Сделай проект сначала хоть один, где будет данная связь , а потом задавай вопрос. Ни в одном проекте, данная связь не появится.
Возможно, но на данный момент, я не смогу сделать не чего, где бы не использовались константы со строковым значением или объектом. Возможно все делают как-то иначе, но я не дорос ещё.
И замечу, что я не говорю, что из-за строковых ключей у меня все лагает, просто хотелось поинтересоваться, есть ли решение или родной метод для этого.

Старый 12.04.2014, 08:22
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 4  
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Кто-то очень умный тут однажды советовал: "С проблемой нужно бороться тогда, когда она появляется."
__________________
Дети не должны знать о своих родителях

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

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Цитата:
А существует ли возможность, получить значение этих ссылок? Или возможно у объектов есть
какие-то другие уникальные идентификаторы, как у DO instanceName ?
instanceName - не уникальный идентификатор. Даже когда они лежат в одном контейнере. (instanceName - приблуда IDE, которая создает тупо ссылку, которую перезатрёт. Ну и name поставит обоим одинаковый).

Вообще то что ты хочешь – это сделать получить что-то вроде хэша объекта. В общем, гораздо проще наследовать требуемый объекты от какого-нибудь класса, который в конструкторе присвоит ему уникальный ID'шник. (ах, а как элегантно задача решилась бы, быть у AS примеси!...)

Разве что
Цитата:
Объясню для чего - ключи String и Object, очень долго добавляются, в отличии от int
куда добавляются? Насколько долго?

Старый 12.04.2014, 11:36
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 6  
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
ключи String и Object, очень долго добавляются, в отличии от int
Akopalipsis, с постоянными размышлениями над подобными вопросами, недолго и паранойю себе заработать.
Может я тебе открою секрет (Полишинеля ), но в as3 int - это тоже Object.
Если нужно что-то очень быстрое, то as3 вообще не подходящий язык для этого (собственно, как и любой другой интерпретируемый язык). Изучи ассемблер, достигни невероятных скоростей

Старый 12.04.2014, 14:42
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 7  
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Цитата:
куда добавляются? Насколько долго?
Добавляются в Dictionary и Object. Вот результаты -
сначала я тестировал скорость получения элементов из обычного массива -
int - 16, String - 16, Object - 16. Сделал я это для того, чтобы отсечь время на получение заранее созданного и помещённого в массив ключа. Теперь скорость добавление объекта + ключ в Dictionary -
ключ int - 260,
ключ String - 11 500,
ключ Object - 600.
Тест для Object -
ключ int - 250,
ключ String - 11 500,
ключ Object - 4050.
Как видно, разница добавления объекта в зависимости т ключа, просто огромная.
Но если у объектов нет не чего уникального, тогда придётся с этим мирится.

Добавлено через 2 минуты
А добавляю я
Код AS3:
var _dictionary:Dictionary = new Dictionary();
var _object:Object = new Object();
var object:Object = new Object();
// и потом 
dictionary[arrayKeys[i]] = object;// arrayKeys это массив с заранее созданными ключами
Добавлено через 33 минуты
я не как не успокоюсь с коллекциями... Какой день сижу и делаю тесты и получается, что она только во вред. У коллекций есть только одно преимущество - это быстрая скорость удаления ( из середины, начала и конца ), замены элементов. Но скорость добавления в коллекцию, во много раз медленнее, так же как получение элемента. Получается, чтобы сделать коллекцию эффективной, нужно хешировать data и тогда будет просто замечательно. Но есть одно НО! Если делать кеш, то ещё можно закрыть глаза на увеличившиеся в РАЗЫ время добавления, но вот то, что в коллекцию нельзя будет добавить два одинаковых элемента ( ведь кеш будет по data ), это уже проблема..

Старый 12.04.2014, 21:44
Korchy вне форума Посмотреть профиль Отправить личное сообщение для Korchy Найти все сообщения от Korchy
  № 8  
Korchy
 
Аватар для Korchy

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
Код AS3:
 
package  {
	// Класс UID
	public class UID {
		private static var Uid:uint = 0;
		public function UID() {
 
		}
		public static function SetUID():uint {
			Uid++;
			return Uid;
		}
	}
}
 
package {
	// Класс "Объект"
	import flash.display.Sprite;
	import UID;
	public class MyObject extends Sprite {
		private var uid:uint;
		public function MyObject() {
			uid = UID.SetUID();
		}
		public function get UID():uint {
			return uid;
		}
	}
}
__________________
interplanety

Старый 12.04.2014, 23:10
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 9  
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Продолжаете заниматься схоластикой?
Вот тут один гигант мысли вынимает "ID in the memory allocation" для object при помощи try-catch.
Про скорость, оптимизацию коллекций написано немало материалов, тестов. Например, http://jacksondunstan.com/articles/tag/dictionary.
Ах да... с английским у вас не очень, я припоминаю..сочувствую.

Старый 12.04.2014, 23:54
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 10  
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
alexcon314 Спасибо! При чем - Большое! Сижу, читаю, оторваться не могу.
А про коллекцию.. я прочел почти все статьи на хабре про коллекции в яве. И после того, как я начал представлять их роль, я опять вернулся к ковырянию всех попавшихся мне на гитхабе коллекций и..
И вот ъоть убей, но мне кажется, что все они сделаны неправильно))) Коллекция, хранящая data в, как их все называют - узлах ( node ), с треском проигрывает по добавлению всем родным хранилищам.
Единственный и СУМАСШЕДШИЙ прирост ноды дают только при удалении, замене и сортировки.
Но во всех коллекциях итератор работает с массивом, полученным путем перекидывания data с нод в него.
И отсюда получается, что все сделано наоборот. Там где нужен массив, там ноды, а там где нужны ноды, там массив..
И по этому я пока склонился к двум классам-франкинштейнам из красивого слова коллекция - хранилище для стринговых ключей ( помогли на метфоруме составить алгоритм ) и хранилищу объектов по id, которое придётся самому в поле класса вбивать или если его и нет, то по примеру из Вашей ссылке. Спасибо ещё раз!

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

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

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


 


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


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