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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.09.2016, 13:38
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 41  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Кость - Wolsh дело говорит чем.
__________________
Марк Tween

Старый 22.09.2016, 13:39
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 42  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,283
Цитата:
Сообщение от Wolsh Посмотреть сообщение
а ведь я специально использовал геометрические фигуры, ради синенького слова Rectangle. Ни на что не намекает?
Намекает, что название класса выбрано неудачно.Вообще можно ведь кидать эксепшен с подробным описанием если в названии класса ошибка.Пусть оно будет и в runtime,а не compiletime.

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от in4core Посмотреть сообщение
Кость - Wolsh дело говорит чем.
Нет. Этот подход просто другой. Но ничем не лучше.
Его главный недостаток в том, что приходится писать кейсы для каждого возможного варианта. У меня в игре разных классов объектов уже около 60 (и это далеко не предел). Писать такой длинный свитч - не самый удобный вариант.
Второй недостаток в том, что он не учитывает классы, которые могут подгружаться в рантайме со внешними swf (в тот же ApplicationDomain).

Вариант же с getDefinitionByName() лучше в обоих этих случаях. А то, что там возможны опечатки, звучит слегка надумано. Всегда можно оттрейсить что же там за имя класса, если что-то неработает. А сам пакет, в котором все они хранятся, можно записать в константу и передавать только название самого класса, без длинного пакета. Собственно, я так и делаю. У меня код воссоздания персонажей занимает всего 6 строчек и все прекрасно работает.
__________________
Ко мне можно и нужно обращаться на ты)

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

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Я могу привести пример.
Делаешь ты, к примеру, игру. В редакторе локаций добавляешь персонажей или объекты, которые в игре представлены определенными классами. Сама локация сохраняется в XML или в JSON, со строчным представлением всех классов персонажей и объектов и их настройками. Чтобы потом этих персонажей в игре воссоздать в нужном месте, как раз и используется getDefinitionByName().
Первый раз вижу чтобы на сервере спрашивали про наши классы. Пример очень натянут. Да я вообще никогда в своей жизни не видел такого. Приложение, создаваемое одним разработчиком? Верю.

Вот верю я в в плотную интеграцию Remote Class instantiation, хотя у нас в студии на неё плохо смотрели серверные программисты (но это другая история, они прост не хотели шевелиться). Но как к этой теме тип "*" относится я не знаю.

Помню, приходил к нам устраиваться один прогер, я еще в таймзире работал. Я посмотрел на код какого-то его самодела на AS3 и спросил почему он всегда использует тип Object и не пользуется сильной типизацией. Он прост ушел.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 22.09.2016, 21:54
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 45  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,283
dimarik, такой вариант глаз не колет?
Код AS3:
var cl:Class= getDefinitionByName(linkage_id) as Class;
if (cl) {
	view = new cl() as DisplayObject;
	addChild(view);
}
Собственно ты сам начал с того, что не нравится тип *, а потом перешел к тому, что из этого типа инстансируется, где никаких * уже нет.

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

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от undefined Посмотреть сообщение
Собственно ты сам начал с того, что не нравится тип *, а потом перешел к тому, что из этого типа инстансируется, где никаких * уже нет.
Соррян. Прочитал сообщение раз десять по ортогоналям и диагоналям, но так и не смог понять о чем речь.
Из типа что-то инстанцируется? Как из отряда земоводных инстанцируется лягушка?
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 22.09.2016, 22:59
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 47  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,283
первоначальная претензия:
Цитата:
Потому что вы никак не сможете в compile time работать с этим типом *.
Если посмотреть на код никакой работы с этим типом не требуется.Требуется проверить, что это Class и если это так, породить экземпляр этого класса.Все, после этого про тип * забыли.Дальше идут претензии что результат инстанциирования приводится к DisplayObject.Вот я про это и говорю: сначала было про *, потом перешли к:
Цитата:
Как вы будете обращаться к методам и свойствам объекта new cl(), если у него нет типа во время компиляции?
На что я заметил, что у new cl() тип есть - DisplayObject.

Добавлено через 1 минуту
Цитата:
Из типа что-то инстанцируется?
класс =тип

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
класс =тип
Это вовсе не значит, что его можно инстанцировать (внезапно?) В частности, Ваш прекрасный DisplayObject — нельзя. Он как раз "отряд Земноводные", абстрактный класс.
Вобщем всё прекрасно со *, кроме одного: Вы сначала вынуждены СОЗДАТЬ неведому зверушку, которую повелел XML, не имея ни малейшего понятия, что при этом произойдет — когда она оживет и начнет что-то делать, — и только потом можете распросить её, с какого она района. Чтобы долго не гундеть: представим, что в linkage_id вам пришло "Main". Теперь посмотрите на мой простенький свитч и, возможно, уловите разницу.

p.S. Предвидя "я же не совершу такую глупость..." хочу заметить, что случается и не такое. Искусство программирования состоит в принципиальном блокировании возможностей для ошибки, а не в уповании на Авось. Если до сих пор Вам удавалось держать все подробности проекта в своей голове, это говорит о размере проекта, а не головы. Когда-нибудь он перестанет помещаться, и придется обзавестись дополнительными "головами". И вот тогда "я же не совершу такую глупость..." станет лишь частью реальности, пожираемой хаосом
__________________
Reality.getBounds(this);

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от dimarik Посмотреть сообщение
Первый раз вижу чтобы на сервере спрашивали про наши классы. Пример очень натянут. Да я вообще никогда в своей жизни не видел такого. Приложение, создаваемое одним разработчиком? Верю.

Вот верю я в в плотную интеграцию Remote Class instantiation, хотя у нас в студии на неё плохо смотрели серверные программисты (но это другая история, они прост не хотели шевелиться). Но как к этой теме тип "*" относится я не знаю.

Помню, приходил к нам устраиваться один прогер, я еще в таймзире работал. Я посмотрел на код какого-то его самодела на AS3 и спросил почему он всегда использует тип Object и не пользуется сильной типизацией. Он прост ушел.
Причем тут сервер? Я ни слова про сервер не говорил. И если уж говорить конкретнее, то игра вообще офлайновая мобильная. Это первое. Второе то, что редактор локаций любой игры, должен знать какие объекты использовать, чтобы они работали в игре либо наоборот, игра должна знать как парсить то, что пришло из редактора. В обоих случаях (не важно один человек это разрабатывает или стопицот) они должны уметь с друг другом взаимодействовать.
Сдается мне, что ты просто не понял, о чем я говорил

Цитата:
Вобщем всё прекрасно со *, кроме одного: Вы сначала вынуждены СОЗДАТЬ неведому зверушку, которую повелел XML, не имея ни малейшего понятия, что при этом произойдет — когда она оживет и начнет что-то делать, — и только потом можете распросить её, с какого она района. Чтобы долго не гундеть: представим, что в linkage_id вам пришло "Main". Теперь посмотрите на мой простенький свитч и, возможно, уловите разницу.
Что мешает сделать так?
Код AS3:
if (ReceivedClass == BaseAnimal) {
     trace("да, это животное может родиться");
} else {
     throw new TypeError("Попытка рождения неведомой зверушки " + linkage_id);
}
Это избавит от написания огромных неуклюжих свичкейсов. При том, что на выходе свитча объект все равно приведется к какому-то базовому классу. Метод то, в котором написан свитч, тоже должен что-то возвращать, либо инициализировать переменную, которая тоже относится к базовому типу
__________________
Ко мне можно и нужно обращаться на ты)


Последний раз редактировалось caseyryan; 23.09.2016 в 09:03.
Старый 23.09.2016, 18:00
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 50  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Что мешает сделать так?
ну, очевидно, нежелание писать огромные уродливые батареи if-ов?
Не знаю, что ты имел ввиду под базовой зверушкой, видимо всё то же Земноводное; судя по победной риторике, ты считаешь что таким странным сравнением заменил свитч на 500 строк? Если бы мне надо было работать с одним единственным классом, я бы конечно не стал писать свитч, не выставляй меня идиотом.
Ну а, если это действительно Земноводное, некий общий тип всех зверушек, то как раз он то и не "может родиться", сорри.
__________________
Reality.getBounds(this);

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

Теги
классы , ООП

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

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


 


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


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