创建星形

时间:2013-07-30 17:56:28

标签: flash actionscript

我正试图通过Actionscript在FLash中重现智利国旗。我已经将蓝色方框和红色矩形向下,现在我需要弄清楚的是如何制作一个准确的开始形状来完成它。

您是否有通过Actionscript 3创建星形的任何指示?

到目前为止我的代码:

//blue box
var blue:Sprite = new Sprite();
addChild(blue);
blue.graphics.lineStyle();
blue.graphics.beginFill(0x0039A6,1);
blue.graphics.moveTo(0,0);
blue.graphics.lineTo(0,320);
blue.graphics.lineTo(320,320);
blue.graphics.lineTo(320,0);

//red rectanle
var red:Sprite = new Sprite();
addChild(red);
red.graphics.lineStyle(); 
red.graphics.beginFill(0xD52B1E,1);
red.graphics.moveTo(0,320);
red.graphics.lineTo(0,640);
red.graphics.lineTo(960,640);
red.graphics.lineTo(960,320);

智利国旗: enter image description here

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

这不是闪光,而是明星的伪代码

var outerSize = 10;
var innerSize = 5;
var rotation = 3.141592/2;
var delta = 2*3.141592/5.0;
var xpos = 100;
var ypos = 100;

for(var point=0;point<5;point++)
{
   red.graphics.moveto(outerSize * cos(delta*point + rotation) + xpos, 
                       outerSize * sin(delta*point + rotation) + ypos);
   red.graphics.lineto(innerSize * cos(delta*(point + 0.5) + rotation) + xpos, 
                       innerSize * sin(delta*(point + 0.5) + rotation) + ypos); 
   red.graphics.lineto(outerSize * cos(delta*(point + 1.0) + rotation) + xpos, 
                       outerSize * sin(delta*(point + 1.0) + rotation) + ypos);
}

如果要填充多边形,可能需要执行其他操作,但这里是多边形的坐标。

如果你正在绘制很多星星,我建议预先计算坐标并将它们存储在一个数组中。 cos和罪可能是昂贵的操作。