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

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

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

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
По умолчанию uint идентификаторы

Решил выйти на новый уровень и попробовать отказаться от строковых идентификаторов там, где это возможно. В частности, делать все игровые предметы на uint-идентификаторах. Пока получается как-то тяжко. Бог с ним, что теперь в консоли появляются абсолютно не информативные сообщения типа "Надеваем предмет ID 114576", можно и к Модели языковой пакет прикрутить и название на русском сразу подцеплять, не велика беда.

Главная проблема - обеспечить уникальность этих самых идентификаторов. А когда они ещё и записаны в шестнадцатиричном представлении, то даже визуально их сопоставлять тяжко.

Пока выкрутился так. Нажимаю Ctrl+K, открываю палитру. Для первого элемента беру какой-нибудь цвет типа RGB 175:175:175. А для каждого следующего увеличиваю яркость с шагом 5 и получаю новое uint-значение. Но это, по-моему, порнография.

Что посоветуете? Спасибо.
__________________
Не сломано - не чини!

Старый 30.05.2018, 18:28
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 2  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
делать как в java: первый айдишник 0,второй 1 и т.д.

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

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Скачай консоль для проекта, очень удобная. Можно даже в рантайме произвольный код выполнять, функций дёргать, смотреть состояние объектов. Ещё у флеша есть дебаггер с полноценными точками останова, незаменимая вещь. Так, прост, вдруг ты ещё не использовал.

пс. Айдишник должен быть уникальным, а не красивым и понятным человеку! Начинай нумерацию с 1, зачем такие сложности. Ноль лучше не юзать, может пригодиться, например, для обозначения отсутствия сущности (null).
__________________
Дети не должны знать о своих родителях

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

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
Цитата:
Сообщение от Tails Посмотреть сообщение
пс. Айдишник должен быть уникальным, а не красивым и понятным человеку! Начинай нумерацию с 1, зачем такие сложности. Ноль лучше не юзать, может пригодиться, например, для обозначения отсутствия сущности (null).
Спасибо. Вот не поверишь, мне в натуре понравилось, как шестнадцатиричные числа выглядят - так красиво и "загадочно", точно как у крутого хакера

Пока надумал наваять статический класс-генератор, который наплодит uint-ов по порядку, забьёт всё в массив и будет по одному выдавать. И всё.
__________________
Не сломано - не чини!

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

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
А мне 16x числа напоминают дизайнеров. Они цвета в нём обычно хранят. Смотришь на какой нибудь 0xFF0000 и сразу видишь женщину в красном красный цвет.
__________________
Дети не должны знать о своих родителях

Старый 31.05.2018, 00:59
ZergMaster вне форума Посмотреть профиль Отправить личное сообщение для ZergMaster Найти все сообщения от ZergMaster
  № 6  
Ответить с цитированием
ZergMaster
 
Аватар для ZergMaster

Регистрация: May 2008
Адрес: Питер
Сообщений: 385
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
Цитата:
Сообщение от Appleman Посмотреть сообщение
Вот не поверишь, мне в натуре понравилось, как шестнадцатиричные числа выглядят - так красиво и "загадочно", точно как у крутого хакера
Оооо, дааа, верю. Я тоже так раньше программировал. Чтобы выглядело круто и сложно и, желательно, никому не понятно. Боже, сколько же от этого было проблем! Сейчас наоборот, стремлюсь, чтобы код был предельно прост и как можно более примитивен. Не чураюсь дописать лишнюю функцию в угоду понятности, по пол часа думаю над названиями переменных и т.п. Сильно проще стало жить.
__________________
while(live()) { hope(); }

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Я вот как-то не верю, что там такое количество инвентаря, что аж строковых констант не хватит.
Я бы не рекомендовал использовать никакие uint идентификаторы и уж тем более автогенератор айдишников. Ты потом задолбишься это отлаживать, если что-то пойдет не так, особенно если это еще и в базу пишется, которую потом потребуется рефакторить. Делай всегда так, чтобы ты сразу мог понять что происходит.
Вот есть у тебя, допустим, плащ, который добавляет 50% защиты, и другой плащ, дающий 100% защиты.
Называешь их cloak_50 и cloak_100 соответственно. Можешь туда и какие-то другие параметры добавить.
Если у тебя есть 2 плаща, которые дают 50% защиты, но отличаются цветом, то можешь написать так
cloak_50_green / cloak_50_red и т.п.
__________________
Ко мне можно и нужно обращаться на ты)

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

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
Старый анекдот:
- Мальчик, ты пионер?
- (гордо) Да!
- Да?!
- (испуганно) Н-нет...
- Нет?!!!
- (в истерике) Ну я не зна-а-а-ю!

Вот так же и с идентификаторами. В соседних ветках меня всей ватагой застыдили, вот типа от Tails:
Цитата:
В принципе, это норм, только класс я бы назвал CharacterProperty и значения использовал не строковые, а целочисленные. (Int, Uint). Строки - жирные и тормознутые.
__________________
Не сломано - не чини!

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Надо понимать где строки тормознутые, а где нет. Если у тебя что-то там со строками делается миллион раз за кадр, то да, лучше числа считать. А для идентификаторов "тормознутость" вообще не имеет значения, зато в отладке числа - это полнейший геморой. Да ты уже и сам это понял, судя по началу темы
А автогенератор использовать нельзя потому что при добавлении чего-то не в конец списка, все айдишники пересчитаются и получится каша. Допустим у игрока был меч с одним айди, а перед ним был молот с другим айди. Айдишники пересчитаются, и окажется, что у игрока уже молот, вместо меча, к примеру.
__________________
Ко мне можно и нужно обращаться на ты)

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

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
Цитата:
Сообщение от caseyryan Посмотреть сообщение
зато в отладке числа - это полнейший геморой. Да ты уже и сам это понял, судя по началу темы
На точняк! Спасибо, камрад, успокоил мою душу. Сейчас с чувством облегчения верну обратно строки!

Цитата:
А автогенератор использовать нельзя потому что при добавлении чего-то не в конец списка, все айдишники пересчитаются и получится каша. Допустим у игрока был меч с одним айди, а перед ним был молот с другим айди. Айдишники пересчитаются, и окажется, что у игрока уже молот, вместо меча, к примеру.
Ну я думал завести в классе-справочнике константы идентификаторов и при запуске программы один раз раздать им значения из генератора, а потом уже до самого конца их использовать:

Код AS3:
// В классе Model IDs
static public const TEST_ID: uint = IDGenerator.generate();
 
// В классе AllItems
var i:Item = new Item(TEST_ID)
__________________
Не сломано - не чини!

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

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

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


 


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


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