1
私は円の形をしていますが、達成したいのはマスクされてフレームに入るということです。時計のようにマスクされないので、0から1まで見ることができます0から2、0から3など、私は放射体などで行わなければならないことを知っていますが、数学は本当に私のお茶です。何か案は?時計のような楕円形をアンマスクします
私は円の形をしていますが、達成したいのはマスクされてフレームに入るということです。時計のようにマスクされないので、0から1まで見ることができます0から2、0から3など、私は放射体などで行わなければならないことを知っていますが、数学は本当に私のお茶です。何か案は?時計のような楕円形をアンマスクします
ステップ1:お使いの形状のためのマスクスプライトを作成します
ステップ2:
clockTimeはあなたの時間ですvar endAngle:Number = 360/12 * clockTime;
:あなたが必要な角度を計算します。分の場合は、360/60を使用してください。
ステップ3:あなたはcurvetoといったを使用して円スライスを描画する必要がENTER_FRAME
上にマスクを更新します。
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);
}
を(私が撮影したとの関連example by meddlingwithfirから上記のコードを編集した)
あなたendFill()
を忘れないでください:それから呼び出して、maskSprite.graphics.clear()
とmaskSprite.graphics.beginFill(0,1)
を使用してください!