Руководство по actionscript. часть 5, стр. 015
Private function renderListener (e:Event):void {
// Вызываем метод draw( ). если изменения, внесенные в данную фигуру.
// не были отображены на экране.
// Если событие для визуализации было запрошено другим объектом. // но данный объект не изменялся, он не будет перерисован, if (hasChanged( )) { draw( );
}
}
}
}
В листинге 25.2 представлен класс Ellipse — подкласс класса BasicShape. Обратите внимание, что специфический код, предназначенный для рисования эллипса, содержится в методе drawShape ( ). Более того, изменение размеров объекта Ellipse не приводит к немедленной перерисовке эллипса. Вместо этого, когда вызывается метод set Si ze ( ), объект вызывает метод setChanged ( ), сообщая о том, что данный объект должен быть перерисован на этапе следующей визуализации экрана, осуществляемой средой выполнения Flash.
Листинг 25.2. Класс Ellipse
package org. moock. drawing { // Представляет эллипс, который может быть нарисован на экране public class Ellipse extends BasicShape { // Ширина и высота эллипса
protected var w:Number; protected var h:Number;
// Конструктор
public function Ellipse (width:Number = 100. height:Number = 100) { super( );
setSize(width. height);
}
// Процедура рисования эллипса override protected function drawShape ( ):void { graphics. drawEllipse(0, 0. w. h);
}
// Устанавливает ширину и высоту эллипса
public function setSize (newWidth:Number. newHeight:Number):void { w = newWidth; h = newHeight;
// Поскольку установка ширины и высоты эллипса вызывает изменение его // формы, он должен быть перерисован на этапе следующей визуализации // экрана. setChangedC );
}
}
}
В листинге 25.3 представлен класс Pol ygon — еще один подкласс класса Bas i cShape. С помощью класса Polygon можно нарисовать любую многогранную фигуру. Он выступает в роли суперкласса для определенных типов многоугольников, например Rectangle и Star. Как и Ellipse, класс Polygon предоставляет свою собственную специфическую процедуру рисования в методе drawShape ( ). Всякий раз, когда задаются точки объекта Polygon (через метод setPoints ( ) ), вызывается метод setChanged ( ), сообщающий о том, что данный объект должен быть перерисован на этапе следующей визуализации экрана, осуществляемой средой выполнения Flash.