Главная / Action Script 3
ПакетВерхний уровень
Классpublic dynamic class Class
НаследованиеClass Inheritance Object

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Для каждого определения класса в программе создается объект Class. Каждый объект Class — это экземпляр класса Class. Объект Class содержит статические свойства и методы класса. Объект класса создает экземпляры класса, когда вызывается с помощью оператора new.

Некоторые методы, например flash.net.getClassByAlias(), возвращают объект типа Class. Другие методы (например, flash.net.registerClassAlias()) могут иметь параметр типа Class.

Имя класса — это ссылка на объект Class, как показано в данном примере:

 
 class Foo {
 }
 

Инструкция class Foo{} является определением класса, создающим объект Class "Foo". Кроме того, инструкция new Foo() создаст новый экземпляр класса Foo. Результат также будет принадлежать типу Foo.

Для объявления классов воспользуйтесь инструкцией class. Объекты Class полезны в случае применения таких расширенных методов, как присвоение классов существующему объекту экземпляра при исполнении (см. раздел "Примеры" ниже).

Любые статические свойства и методы класса, относящиеся к текущему объекту Class класса. Сам класс при этом объявляет прототип.

Как правило, объявлять или создавать переменные типа Class вручную не требуется. Однако в следующем коде класс присваивается в качестве свойства общедоступного класса circleClass, и на это свойство можно ссылаться как на свойство основного класса Library:

 package {
  import flash.display.Sprite;
  public class Library extends Sprite {
   
   public var circleClass:Class = Circle;
   public function Library() {
   }
  }
 }
  
 import flash.display.Shape;
 class Circle extends Shape {
  public function Circle(color:uint = 0xFFCC00, radius:Number = 10) {
   graphics.beginFill(color);
   graphics.drawCircle(radius, radius, radius);
  }
 }
 

Другой SWF-файл может загрузить итоговый файл Library.swf, а затем создать экземпляры объектов типа Circle. В следующем примере показан способ получения доступа к дочерним ресурсам SWF-файла. (Помимо этого можно выбрать flash.utils.getDefnitionByName() или импортировать определения заглушек дочернего SWF-файла).

 package {
  import flash.display.Sprite;
  import flash.display.Shape;
  import flash.display.Loader;
  import flash.net.URLRequest;
  import flash.events.Event;
  public class LibaryLoader extends Sprite {
   public function LibaryLoader() {
    var ldr:Loader = new Loader();
    var urlReq:URLRequest = new URLRequest("Library.swf");
    ldr.load(urlReq);
    ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);
   }
   private function loaded(event:Event):void {
    var library:Object = event.target.content;
    var circle:Shape = new library.circleClass();
    addChild(circle);
   }
  }
 }
 

В ActionScript 3.0 можно создавать встроенные классы для внешних ресурсов (например, изображений, звуков или шрифтов), которые компилируются в SWF-файлы. В более ранних версиях ActionScript эти ресурсы связывались с помощью идентификатора связи с методом MovieClip.attachMovie(). В ActionScript 3.0 каждый встроенный ресурс представлен уникальным встроенным классом ресурсов. Поэтому можно воспользоваться оператором new, чтобы создать экземпляр связанного класса ресурса а затем вызвать методы и свойства по отношению к этому ресурсу.

Посмотреть примеры

См. также

Object.prototype
новый оператор
Классы
Дополнительные темы


Общедоступные свойства
 СвойствоОпределено
 Inheritedconstructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта.
Object
 Inheritedprototype : Object
[статические] Ссылка на модель объекта класса или функции.
Object
Общедоступные методы
 МетодОпределено
 Inherited
Показывает, определено ли заданное свойство для объекта.
Object
 Inherited
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра.
Object
 Inherited
Показывает наличие заданного свойства и его перечисляемость.
Object
 Inherited
Задает доступность динамического свойства для операций цикла.
Object
 Inherited
Возвращает строковое представление заданного объекта.
Object
 Inherited
Возвращает элементарное значение заданного объекта.
Object
Примеры Как пользоваться примерами
Class.1.as

В следующем примере показано, как использовать объекты Class, чтобы отложить до момента выполнения выбор класса, для которого следующим образом создаются экземпляры:
  1. Объявите два класса как ClassA и ClassB.
  2. Объявите одну переменную типа Class classToConstruct, а другую типа Boolean chooseClassA, для которой в данном случае выбрано значение true. Однако в вашем коде может применяться пользовательское тестовое выражение, устанавливающее значение этой переменной.
package {
    import flash.display.Sprite;
    
    public class ClassExample extends Sprite {
        public function ClassExample() {
            var classToConstruct:Class;            
            var classInstance:Object;

            classToConstruct = ClassA;
            classInstance = new classToConstruct();
            trace(classInstance);    // [object ClassA]

            classToConstruct = ClassB;
            classInstance = new classToConstruct();
            trace(classInstance);    // [object ClassB]
        }
    }
}

class ClassA {
}
    
class ClassB {
}