вы можете использовать flash.utils.describeType для возврата XML-данных, содержащих эту информацию.он работает по-разному для базовых классов, как flash.display.Sprite
, но для пользовательских классов / каталогов вы можете написать что-то вроде этого:
package branchA.branchB.branchC
{
//Imports
import flash.utils.describeType;
//Class
public class Test
{
//Constructor
public function Test()
{
trace(describeType(this).@name);
}
}
}
//OUTPUT: branchA.branchB.branchC::Test
, если вы хотите вернуть базовый класс, вы можете написать что-то вроде этого:
package
{
//Imports
import flash.display.Sprite;
import flash.utils.describeType;
//Class
public class Test extends Sprite
{
//Constructor
public function Test()
{
trace(describeType(this).@base);
}
}
}
//OUTPUT: flash.display::Sprite
есть много другой полезной информации, которую вы можете получить, анализируя возвращенные XML-данные descriptionType.
Обновление:
Объекты класса не должны быть сначала созданы для того, чтобы получить их информацию с помощью descriptionType ().Вы можете создать общедоступную статическую функцию (или любую другую), которая принимает массив объектов вашего класса и возвращает массив строк, содержащих требуемые данные descriptionType.
примерно так:
package
{
import flash.utils.describeType;
final public class Describe
{
public static function packageNames(classObjects:Array):Vector.<String>
{
var names:Vector.<String> = new Vector.<String>();
for each (var classObject in classObjects)
names.push(describeType(classObject.@name.toString()));
return names;
}
}
}
затем из любой точки вашей программы вы можете передать массив всех классов следующим образом:
var names:Vector.<String> = Describe.packageNames(new Array(classOne, classTwo, classThree));
trace(names);
//Output:
//com.example.test::classOne
//com.example.test::classTwo
//com.example.test::classThree