Вопрос кажется мне эквивалентным: «Почему я могу использовать класс в качестве значения?» Это хороший вопрос.
Есть две основные вещи, которые вы можете сделать с классом в ActionScript; вы можете создать экземпляр этого, и вы можете получить доступ к статическим свойствам этого. (Хорошо, есть и другие вещи, но они очевидны.) Создание класса, вероятно, является наиболее уместным использованием класса в качестве значения; Класс - это его собственная фабрика , подобная тем, которые вы явно сделали бы в C ++ или Java.
Вот пример из маленькой игры в тетрис, которую я писал в качестве упражнения. У меня было два класса, Брик и SceneBrick. Кирпич - это игровой кирпич, который падает и накапливается. SceneBrick - это кирпичик, просто нарисованный как рамка игровой площадки.
Однако я использовал одну функцию, чтобы нарисовать их оба, не обращаясь ни к одному из типов внутри функции:
function drawBricks(xs:Array, ys:Array, brickType:Class){
xs.map(function(o,i,a){
var brick = new brickType();
// etc.
});
}
И я мог бы использовать это так:
drawBricks([0,1,2,3], [4,4,4,4], Brick); // draw a long piece
drawBricks(times(0, 21), countFrom(0, 21), SceneBrick); // draw a big vertical "wall"
В ActionScript вы можете передавать класс как значение и использовать его для создания экземпляра этого класса. В таком языке, как Java или C ++, вам придется либо использовать его в качестве параметра для универсального класса, либо определить фабричные классы с некоторым общим супертипом, чтобы сделать это.