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

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

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

Регистрация: Feb 2008
Сообщений: 890
По умолчанию Как узнать что, например, Sprite "есть" DisplayObject?

Извините, затупился на ровном месте:
как узнать, что один класс является наследником другого?

Добавлено через 36 минут
Немного конкретней поясню, что требуется:

Код AS3:
public function someMethod (someClass:Class):void
{
    //тут нужно сделать проверку, что someClass "есть" наследник ParentClass;
 
    var param:ParentClass = new someClass( );
}
__________________
скриптограф

Старый 18.05.2010, 01:51
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 2  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
вы не поверите...
Код AS3:
trace(mySprite is DisplayObject);
__________________
тонкий тролль, осеянный благодатью

Старый 18.05.2010, 01:54
orcpochta вне форума Посмотреть профиль Отправить личное сообщение для orcpochta Найти все сообщения от orcpochta
  № 3  
Ответить с цитированием
orcpochta

Регистрация: Feb 2008
Сообщений: 890
Цитата:
Сообщение от GAIKER Посмотреть сообщение
вы не поверите...
Код AS3:
trace(mySprite is DisplayObject);
не поверю - мне надо класс проверить, а не инстанс))

Добавлено через 6 минут
на самом деле я загоняюсь, и приведение типов само за меня все проверит, но мне теперь просто из любопытства надо понять, как узнать, что один класс - наследник другого
__________________
скриптограф

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

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
Копать здесь... Это если точно нужно знать кто от кого....
На самом деле - узнать является ли объект наследником какого-либо класса быстро можно так:

Код AS3:
var s:Sprite = new Sprite()
trace(s as DisplayObject); //[object Sprite]
trace(s as DisplayObjectContainer); //[object Sprite]
trace(s as EventDispatcher); //[object Sprite]
trace(s as MovieClip); //null


Последний раз редактировалось Партизан; 18.05.2010 в 11:03. Причина: добавлен пример
Старый 18.05.2010, 10:58
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 5  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
isPrototype

Старый 18.05.2010, 11:10
orcpochta вне форума Посмотреть профиль Отправить личное сообщение для orcpochta Найти все сообщения от orcpochta
  № 6  
Ответить с цитированием
orcpochta

Регистрация: Feb 2008
Сообщений: 890
Цитата:
Сообщение от Партизан Посмотреть сообщение
Копать здесь... Это если точно нужно знать кто от кого....
На самом деле - узнать является ли объект наследником какого-либо класса быстро можно так:

Код AS3:
var s:Sprite = new Sprite()
trace(s as DisplayObject); //[object Sprite]
trace(s as DisplayObjectContainer); //[object Sprite]
trace(s as EventDispatcher); //[object Sprite]
trace(s as MovieClip); //null
Про "копать здесь" - помогло, там можно проследить всю цепь наследования и реализуемые интерфейсы.
А про "as" не актуально, т.к. я сам класс хотел проверить, а не его экземпляр)))

Добавлено через 1 минуту
Цитата:
Сообщение от BlooDHounD Посмотреть сообщение
isPrototype

как-то так...)))

Цитата:
По запросу isPrototype не найдено ни одного документа.
__________________
скриптограф

Старый 18.05.2010, 11:17
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
isPrototypeOf.

Старый 18.05.2010, 11:30
orcpochta вне форума Посмотреть профиль Отправить личное сообщение для orcpochta Найти все сообщения от orcpochta
  № 8  
Ответить с цитированием
orcpochta

Регистрация: Feb 2008
Сообщений: 890
Цитата:
Сообщение от etc Посмотреть сообщение
isPrototypeOf.
не могу соорудить конструкцию "класс Сын является наследником класса Отец"

Добавлено через 3 минуты
А не... могу!)))

Код AS3:
trace(Object(Class(DisplayObject).prototype).isPrototypeOf(Object(Class(Sprite).prototype)));
или если не строго

Код AS3:
trace(DisplayObject.prototype.isPrototypeOf(Sprite.prototype));
Добавлено через 14 минут
Ну хорошо, а если в примере из первого поста надо проверить не наследование, а реализацию интерфейса - есть простой способ?

Код AS3:
public function someMethod (someClass:Class):void
{
    //тут нужно сделать проверку, что someClass реализует MyInterface;
 
    var inst:MyInterface = new someClass( );
}
__________________
скриптограф

Старый 18.05.2010, 11:54
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 9  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Код AS3:
trace(describeType(Sprite).factory.implementsInterface.(@type==getQualifiedClassName(IBitmapDrawable)).length() > 0);

Старый 18.05.2010, 11:56
orcpochta вне форума Посмотреть профиль Отправить личное сообщение для orcpochta Найти все сообщения от orcpochta
  № 10  
Ответить с цитированием
orcpochta

Регистрация: Feb 2008
Сообщений: 890
Цитата:
Сообщение от etc Посмотреть сообщение
Код AS3:
trace(describeType(Sprite).factory.implementsInterface.(@type==getQualifiedClassName(IBitmapDrawable)).length() > 0);
не, это я и сам понял - точно также можно проверить и наследование))) Партизан уже подсказал))))

способа вроде isPrototypeOf не существует?))
__________________
скриптограф

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

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

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


 


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


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