2013-07-30 34 views
0

我试图通过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

这不闪,而是伪一颗星

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和sin可能是昂贵的操作。

+0

真的吗?你会六次计算一个常数值“2 * 3.141592/5.0”吗? – Kolyunya

+0

如果你画一次,这将是不明显的,但如果这个代码在一个enterframe循环中使用,它有点低效 –

+0

对不起,我不明白这一点。我对AS3编程相当陌生。我是否可以使用LineTo(x,y)按线形绘制星形图形? – danslik