Расширение класса ActionScript

На этом занятии мы рассмотрим 2 вопроса:

  1. Расширение класса
  2. Дополнительная информация

Иногда Вам нужно будет создать такой пользовательский класс (custom class) в Actionscript 3, который позаимствует все или большинство свойств (property) и методов (method) у другого, уже существующего класса. В этом уроке мы будет создавать класс (class) для показа предварительных (небольших по размеру и средних по качеству) изображений фотографий, тех что мы обычно видим в виртуальных фото-галереях. Основные свойства такого предварительного изображения те же, что и у оригинальной фотографии: имя, место хранения файла и т.д. Единственное отличие между ними это, собственно, размер файла. Поэтому вместо того, чтобы вновь создавать все детали, которые содержаться в классе Picture, Вы можете создать подкласс! Таким образом подкласс Thumbnails унаследует все свойства класса Picture и будет иметь свои собственные, такие как, например, небольшой размер файла.

В серии уроков раздела «Управление шкалой времени с помощью кода (Timeline)» мы рассмотрим другой пример того же процесса. Там Вы узнаете как размещать визуальные элементы на сцене с помощью кода, создав подкласс MovieClip.

Процесс создания подкласса известен как расширение класса (extend). Вы берете уже существующий класс и расширяете его, добавляя к нему новые свойства и методы. Класс же, который расширяется будем называть суперкласс. Итак, подкласс и суперкласс, все просто.

Во время создания подкласса Вам необходимо импортировать (import) в него суперкласс, сопровождая этот процесс записью полного имени суперкласса (имя класса плюс имя пакета, в котором он находится). Затем в декларационной строке подкласса Вы пишите:

  • модификатор доступа к нему
  • ключевое слово class
  • имя подкласса
  • ключевое слово extends
  • имя суперкласса
  • фигурные скобки

Свойства и методы суперкласса становятся доступны через метод super(). Если Вы делаете расширение класса уже встроенного в ActionScript, то Вам нужно будет посмотреть его полное имя либо в файле помощи программы Flash CS5, либо в официальной документации языка ActionScript 3 в интернете.

Расширение класса Actionscript

Создайте новый файл AS3 (см. урок «Создание нового файла ActionScript»).

Задекларируйте пакет, который будет содержать расширяемый класс. Например:

package gallery{
}

Внутри фигурных скобок сделайте запись об импорте суперкласса. Например:

import gallery.Picture;
// gallery – имя пакета, Picture – имя суперкласса

Задекларируйте подкласс. Например:

public class Thumbnails extends Picture{
}

Внутри фигурных скобок создайте свойства (переменные (var)) этого подкласса. См. урок «Присвоение свойств классу AS3».

Создайте необходимые методы для этого подкласса. См. урок «Методы ActionScript».

Расширение класса Actionscript

Щелкните File –> Save As. Появится диалоговое окно Save As.

Сохранение файла AS3

Выберите нужную папку. Введите имя подкласса, например Thumbnails.

Щелкните на Save.

Вы создали подкласс Thumbnails, т.е. расширение класса Picture.

Дополнительная информация

Хотя по логике вещей Вы должны поместить подкласс в папку к суперклассу, но это делать необязательно, т.к. Вы указываете полное имя суперкласса (имя пакета и имя самого суперкласса) во время записи операции импорта. Следовательно их можно смело помещать в разные папки.

Некоторые классы, у которых есть атрибут final нельзя расширить.

final public class MyClass{
}

К таким классам относятся, в том числе, и встроенные в ActionScript 3 классы Math, Mouse и др.

В реальных flash-фильмах когда Вы создаете новый символ на сцене, тем самым Вы осуществляете расширение класса MovieClip или SimpleButton.