Пакет | Верхний уровень |
Класс | public dynamic class Class |
Наследование | Class Object |
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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
, чтобы создать экземпляр связанного класса ресурса, а затем вызвать методы и свойства по отношению к этому ресурсу.
Связанные элементы API
- Объявите два класса как
ClassA
иClassB
. - Объявите одну переменную типа Class
classToConstruct
, а другую типа BooleanchooseClassA
, для которой в данном случае выбрано значение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 { }
Tue Jun 12 2018, 11:34 AM Z