Руководство по actionscript. часть 5, стр. 011
Пример: библиотека объектно-ориентированных фигур
Графическое содержимое, создаваемое с помощью внутренних методов рисования фигур (drawEllipse ( ), drawRect ( ) и т. д.), не связано ни с каким объектом. После того как оно будет нарисовано, его невозможно изменить или удалить независимо от другого содержимого. В ActionScript отсутствуют классы, предоставляющие объектно-ориентированный доступ к соответствующим фигурам на экране. В этом разделе продемонстрирован один из способов устранения данного недостатка — пример реализации небольшой библиотеки классов для создания и управления фигурами как объектами.
В нашей библиотеке фигур представлены следующие классы: Basics паре, Rectange, Ellipse, Star и Polygon. Класс BasicShape — это базовый класс библиотеки. Он расширяет внутренний класс Shape, который предоставляет базовую поверхность с минимальным потреблением ресурсов для рисования фигур. Класс BasicShape управляет стилями контура и заливки для всех фигур и определяет, когда фигура должна быть перерисована. Экземпляры остальных классов представляют геометрические фигуры, которые могут добавляться в список отображения или удаляться из него. Класс каждой фигуры реализует свою собственную процедуру рисования, учитывающую особенности построения
данной фигуры. После создания объекта фигуры ее штриховка, заливка и контур могут быть легко изменены.
В следующих шести примерах применяются на практике многие методики, которые были рассмотрены в этой книге, — особенно те, которые были рассмотрены в этой главе. Обращайте пристальное внимание на многочисленные комментарии; они помогут вам понять код.
В листинге 25.1 представлен класс BasicShape — класс абстрактного типа, который определяет базовую функциональность для всех фигур в нашей библиотеке классов. Его основные возможности реализуются с помощью следующих методов:
? setStrokeStyle ( ) и setFillStyle ( ) — сохраняют визуальные характеристики фигуры;
? draw ( ) — отображает фигуру, но делегирует конкретное рисование линий методу drawShape ( ) (абстрактному методу, реализуемому всеми подклассами);
? setChanged( ), clearChanged ( ) и hasChanged*( ) — позволяют отслеживать, изменились ли параметры фигуры с момента ее последнего отображения на экране;
? requestDraw( ), addedListener ( ), removedListener ( ), а также renderListener ( ) — в сочетании эти методы определяют момент, когда необходимо перерисовать фигуру.
Листинг 25.1. Класс BasicShape
package org. moock. drawing { import flash. display.*; import flash. events.*; import f 1 ash. errors.111egalOperationError;
// Базовый класс для отображаемых геометрических фигур public class BasicShape extends Shape { // Стиль заливки
protected var fill Col or.-Number = OxFFFFFF; protected var fill Alpha.-Number = 1;
// Стиль линий. Используются скошенные соединения вместо закругленных // (настройка по умолчанию в языке ActionScript). Все остальные // первоначальные настройки совпадают с настройками по умолчанию языка // ActionScript.