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

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

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
The bomb! Проверка класса на принадлежность к типу? Оо

Встала передо мной такая головоломка:

Есть некий класс, который хранится именно как тип Class, нужно проверить наследует ли он определенный тип, но сделать это без создания экземпляра.
Для наглядности:
Код AS3:
package {
	public class SomeClass implements ISomeInterface {
 
		public function SomeClass() {
 
		}
	}
}
 
package {
	public class SomeOtherClass extends SomeClass {
 
		public function SomeOtherClass() {
 
		}
	}
}
 
 
 
package {
	public class Test extends SomeClass {
 
		private var _class:Class = null;
 
		public function Test() {
			_class = SomeOtherClass;
			testIt();
		}
 
		private function testIt():void {
			trace((new _class()) is ISomeInterface); // true, с экземпляром все ок
		}
	}
}
Естественно, создав экземпляр проверить можно легко. А без экземпляра можно ли?
getQualifiedClassName() не катит, так как он вернет имя класса, но никак не скажет наследует ли он другой класс, рекурсивно вызывать getQualifiedSuperclassName так же не вариант, потому что нужно проверить интерфейс)

п.с. Задача скорее из любопытства. Мне, в принципе не в лом создать экземпляр и хранить ссылку на него в переменной. Может кто-то сталкивался с подобной задачей, или тоже хочет поломать голову)

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
describeType().factory.extendsClass.@type
__________________
Reality.getBounds(this);

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Спасибо)
Про descrybeType что-то даже в голову не пришло. Там как раз и implementsInterface есть.

Старый 23.09.2015, 09:53
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 4  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
http://jacksondunstan.com/articles/2609

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от udaaff Посмотреть сообщение
Что-то я не понял. Там есть ссылка на этот класс https://github.com/tschneidereit/Swi...ibeTypeJSON.as
В котором используется метод descrybeTypeJSON()
Откуда берется сам метод? Оо

Добавлено через 1 минуту
Аа, понял. Неофициальный метод, скрытый от юзеров)) Круто

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

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

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


 


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


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