Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 像钟表一样揭开椭圆形的面具_Actionscript 3 - Fatal编程技术网

Actionscript 3 像钟表一样揭开椭圆形的面具

Actionscript 3 像钟表一样揭开椭圆形的面具,actionscript-3,Actionscript 3,我有一个圆的形状,我想实现的是,它被遮住,然后不进入画面,它会像时钟一样被揭穿,所以你可以看到从0到1,然后从0到2,0到3,等等,我知道这必须用弧度等来完成,但数学不是我真正喜欢的。有什么想法吗?步骤1:为你的形状创建一个面具精灵 步骤2:计算所需的角度: var endAngle:Number = 360 / 12 * clockTime; 你的时间在哪里。使用360/60分钟 第3步:刷新输入帧上的掩码 您必须使用curveTo绘制饼图切片。使用maskSprite.graphics.c

我有一个圆的形状,我想实现的是,它被遮住,然后不进入画面,它会像时钟一样被揭穿,所以你可以看到从0到1,然后从0到2,0到3,等等,我知道这必须用弧度等来完成,但数学不是我真正喜欢的。有什么想法吗?

步骤1:为你的形状创建一个面具精灵

步骤2:计算所需的角度:

var endAngle:Number = 360 / 12 * clockTime;
你的时间在哪里。使用360/60分钟

第3步:刷新输入帧上的掩码

您必须使用curveTo绘制饼图切片。使用
maskSprite.graphics.clear()
maskSprite.graphics.beginll(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 );
}
函数drawClockSlice(精灵:精灵,中心X:编号,中心Y:编号,端角:编号,半径:编号):无效
{
变量g:Graphics=sprite.Graphics;
var控制点:点;
var锚定点:点;
var startRadians:Number=Math.PI/180*-90;
var endRadians:Number=Math.PI/180*(endAngle-90);
变量差:数值=数学.abs(endRadians-startRadians);
风险值划分:数字=数学下限(差/(数学PI/4))+1;
变量范围:数值=差值/(2*个分段);
var controlRadius:Number=radius/Math.cos(span);
g、 移动到(centerX、centerY);
g、 lineTo(centerX+(数学cos(startRadians)*半径)、centerY+数学sin(startRadians)*半径);
对于(变量i:Number=0;i
(我从相关网站上获取并编辑了上述代码)


不要忘记您的
endFill()

步骤1:为您的形状创建遮罩精灵

步骤2:计算所需的角度:

var endAngle:Number = 360 / 12 * clockTime;
你的时间在哪里。使用360/60分钟

第3步:刷新输入帧上的掩码

您必须使用curveTo绘制饼图切片。使用
maskSprite.graphics.clear()
maskSprite.graphics.beginll(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 );
}
函数drawClockSlice(精灵:精灵,中心X:编号,中心Y:编号,端角:编号,半径:编号):无效
{
变量g:Graphics=sprite.Graphics;
var控制点:点;
var锚定点:点;
var startRadians:Number=Math.PI/180*-90;
var endRadians:Number=Math.PI/180*(endAngle-90);
变量差:数值=数学.abs(endRadians-startRadians);
风险值划分:数字=数学下限(差/(数学PI/4))+1;
变量范围:数值=差值/(2*个分段);
var controlRadius:Number=radius/Math.cos(span);
g、 移动到(centerX、centerY);
g、 lineTo(centerX+(数学cos(startRadians)*半径)、centerY+数学sin(startRadians)*半径);
对于(变量i:Number=0;i
(我从相关网站上获取并编辑了上述代码)

不要忘记您的
endFill()