19
3. Создайте новый класс Graphics2D, наследующий методы класса
MovieClip, в конструкторе которого в качестве прототипа класса MovieClip
укажите метод рисования окружности drawCircle():
public function Graphics2D() {
MovieClip.prototype.drawCircle = drawCircle;
}
4. Метод drawCircle() будет принимать значения координат центра
(переменные x, y) и радиуса (переменная radius) окружности:
function drawCircle(x:Number, y:Number, radius:Number) {
var n:Number = 8;
var theta:Number = (360/n)*Math.PI/180;
var sector:Number = radius/Math.cos(theta/2);
var angle2:Number = 0;
var angle1:Number = angle2-theta/2;
this.moveTo(radius, 0);
for (var i = 0; i<n; i++) {
angle2 += theta;
angle1 += theta;
var x2:Number = radius*Math.cos(angle2);
var y2:Number = radius*Math.sin(angle2);
var x1:Number = sector*Math.cos(angle1);
var y1:Number = sector*Math.sin(angle1);
this.curveTo(x1, y1, x2, y2);
}
this._x = x;
this._y = y;
}
5. Переменная n в методе drawCircle() управляет точностью построения
окружности (количество сегментов должно быть не меньше восьми).
6. Для того, чтобы создать графический объект с помощью метода
drawCircle(), необходимо добавить на сцену экземпляр класса Graphics2D и
создать пустой объект типа MovieClip, у которого уже будет новый метод:
var graphics:Graphics2D = new Graphics2D(this.target);
var bounds:MovieClip = this.target.createEmptyMovieClip("bounds", 0);
7. Для закрашивания объекта bounds можно использовать стандартные
методы. Так, например, для градиентного закрашивания от красного цвета до
чёрного сверху вниз линейно, необходимо использовать следующие
параметры (где cx и cy – координаты центра сцены):
var colors:Array = [0xff0000, 0x000000];
var alphas:Array = [100, 100];
var ratios:Array = [0x00, 0xff];
var matrix:Object = {matrixType:"box", x:-cx, y:-cy, w:cx*2, h:cy*2,
Êr:(90/180)*Math.PI};
bounds.beginGradientFill("linear", colors, alphas, ratios, matrix);
bounds.drawCircle(cx, cy, Math.min(cx, cy));
bounds.endFill();