Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как узнать принадлежность к интерфейсу? (http://www.flasher.ru/forum/showthread.php?t=170267)

Genzo 21.10.2011 13:15

Как узнать принадлежность к интерфейсу?
 
Есть ли метод, чтобы узнать имплементирует ли класс заданный интерфейс?
Можно describeType парсить, но очень не хочется.
А :
Код AS3:

(MyClass is IMyClasses) == false


GBee 21.10.2011 13:16

Создать экземпляр, проверить и убить

smithy 21.10.2011 15:42

Либо так
Код AS3:

var classDescription:XML = describeType(MyClass);
trace(classDescription.factory.implementsInterface.(@type == getQualifiedClassName(IMyClasses)).length() != 0);

Правда, это очень медленно.

etc 21.10.2011 23:39

Код AS3:

IMyClass.prototype.isPrototypeOf(MyClass.prototype)


dimarik 21.10.2011 23:42

Код AS3:

trace(IEventDispatcher.prototype.isPrototypeOf(EventDispatcher.prototype));// false


etc 21.10.2011 23:44

Чьорт, ну тогда придётся парсить:

Код AS3:

import flash.display.IBitmapDrawable;
import flash.utils.getQualifiedClassName;
var className:String = getQualifiedClassName(IBitmapDrawable);
trace(describeType(Sprite).factory.implementsInterface.(@type == className).length() > 0);


dimarik 21.10.2011 23:58

Аха, сплошная рефлексия. Вроде к 11 ее сделали даже в джонсоне (JSON).

etc 22.10.2011 00:01

Вы хотели сказать в обычном объекте?
Так это можно и в десятке получить.

gloomyBrain 22.10.2011 00:52

Интересно, а чисто гипотетически - откуда у интерфейса прототип? Он же не подразумевает реализацию.

etc 22.10.2011 00:57

Мне кажется, это последствия следования стандарту ECMAScript.


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

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