AS3 - Найти базовый класс подкласса - PullRequest
1 голос
/ 14 апреля 2011

У меня есть программа, в которой у меня есть несколько классов, производных от базового класса. Я хочу взять все экземпляры различных подклассов и поместить их в массив. Могу ли я найти что-нибудь из базового класса?

Например, прямо сейчас получить число детей, а затем посмотреть, что они, так:

for (var i = 0; i < this.getNumChildren(); i++)
{
    if (i is "type")
        objectArray.push(i);
}

Где тип, мне нужно, чтобы он ссылался на базовый класс экземпляра, а не на подкласс, который создал экземпляр.

Ответы [ 2 ]

3 голосов
/ 14 апреля 2011

«Object is Type» вернет true как для подкласса, так и для базового класса:

Пример:

for (var i = 0; i < this.getNumChildren(); i++) {
    var c:* = this.getChildAt(i);
    if ( c is BaseClass ) {
        //true for both SubClass1 and SubClass2 instances
        objectArray.push(c);
        if ( c is SubClass1 ) {

        }
        else if ( c is SubClass2 ) {

        }
    }
}
2 голосов
/ 14 апреля 2011

Я догадываюсь, о чем вы спрашиваете: давайте предположим, что у вас есть этот код в классе B, который расширяет класс A, и вам нужен экземпляр типа B, чтобы выяснить, каков его собственный суперкласс(класс A) во время выполнения.

Вот как вы можете это сделать:

// Get the name of the super class for this object
var superClassName:String = flash.utils.getQualifiedSuperclassName(this);

// Get a Class reference to that superclass
var superClass:Class = flash.utils.getDefinitionByName(superClassName) as Class;

использовать superClass вместо «type» в вашем выражении.Это позволит экземпляру типа B найти все объекты с общим происхождением типа A.

Это то, о чем вы спрашивали?Если нет, пожалуйста, уточните.Мне не ясно, спрашиваете ли вы, как получить базовый класс, или вы просто неправильно понимаете, как работает оператор is .Если вы знаете имя суперкласса во время разработки, почему бы просто не поставить его вместо «type»?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...