Руководство по actionscript. часть 3, стр. 151
Мы завершили изучение интерфейса API, связанного с контейнерами. Напоследок рассмотрим одну небольшую, но очень важную тему в программировании экранного вывода: пользовательские графические классы.
Пользовательские графические классы
В этой главе мы нарисовали множество прямоугольников, окружностей и треугольников. Так много, что некоторые из рассмотренных примеров содержали «код с погрешностями»: код повторялся и, как результат, способствовал ошибкам.
Дополнительную информацию о «коде с погрешностями» (общие признаки потенциальных м?. 4 • проблем в коде) можно найти по адресу http.7/xp. c2.com/CodeSmell. html.
4 дк—
Чтобы обеспечить возможность повторного применения и модульность при работе с примитивными фигурами, мы можем перенести повторяющиеся процедуры рисования в пользовательские классы, которые расширяют класс Shape. Начнем с пользовательского класса Rectangle, применив чрезвычайно простой подход, который предоставляет весьма ограниченный набор вариантов контура и заливки и не позволяет изменять прямоугольник после того, как он будет нарисован (мы расширим возможности класса Rectangle в гл. 25). Этот код продемонстрирован в листинге 20.9.
Листинг 20.9. Rectangle — простой подкласс класса Shape
package { import flash. display. Shape:
public class Rectangle extends Shape { public function Rectangle (w:Number,
h:Number,
lineThickness:Number, lineColor:uint, fillColonuint) { graphi cs.1i neStyle(1i neThi ckness, 1i neColor);
graphics. beginFill(fill Col or. 1); graphics. drawRect(0, 0, w, h);
}
}
}
Поскольку класс Rectangle расширяет класс Shape, он наследует переменную graphics класса Shape и может использовать ее для рисования прямоугольника.