Шаг 1: Создайте маску Sprite для вашей фигуры
Шаг 2: Рассчитайте необходимый угол:
var endAngle:Number = 360 / 12 * clockTime;
, где clockTime - ваши часы.Для минут используйте 360 / 60.
Шаг 3: Обновите маску на ENTER_FRAME
Вы должны нарисовать круговую часть, используя CurveTo.Используйте maskSprite.graphics.clear()
и maskSprite.graphics.beginFill(0,1)
, затем позвоните:
function drawClockSlice (sprite : Sprite, centerX : Number, centerY : Number, endAngle : Number, radius : Number) : void
{
var g : Graphics = sprite.graphics;
var controlPoint : Point;
var anchorPoint : Point;
var startRadians:Number = Math.PI / 180 * -90;
var endRadians : Number = Math.PI / 180 * (endAngle-90);
var difference : Number = Math.abs( endRadians - startRadians );
var divisions : Number = Math.floor( difference / (Math.PI / 4) ) + 1;
var span : Number = difference / (2 * divisions);
var controlRadius : Number = radius / Math.cos( span );
g.moveTo(centerX, centerY);
g.lineTo(centerX + (Math.cos( startRadians ) * radius), centerY + Math.sin( startRadians ) * radius );
for (var i : Number = 0; i < divisions; ++i)
{
endRadians = startRadians + span;
startRadians = endRadians + span;
controlPoint = new Point( centerX + Math.cos( endRadians ) * controlRadius, centerY + Math.sin( endRadians ) * controlRadius );
anchorPoint = new Point( centerX + Math.cos( startRadians ) * radius, centerY + Math.sin( startRadians ) * radius );
g.curveTo( controlPoint.x, controlPoint.y, anchorPoint.x, anchorPoint.y );
}
g.lineTo( centerX, centerY );
}
(я взял и отредактировал приведенный выше код из соответствующего примера с помощью meddlingwithfir )
Не забывайте свой endFill()
!