您的位置:首页 > 其它

flash 绘图API:绘制星星

2010-04-30 18:17 330 查看


今天我们利用创建的图案进行绘制欧盟的旗,12个星星,其原理很简单,我们首先通过绘制创建一个Star的星星形状,然后实现这个图案分布。这个星星是怎样绘制?我则采用一种比较笨的办法,通过描点法进行连线创作实现这个过程。



绘制过程 首先是对其10个点进行记录,你会发现如果在中心进行连线的 有一个长和一个短线段。这10个点进行改造记录之后,然后进行保存,通过绘图APi进行连线,思路很简单,或者会有更好办法生成星星形状,这不是最好的。但足够我们绘制创建这样的图案。

//StarLine 星形
//vesion 1.0
//author 夏天的树人
package org.summerTree.graphics
{

import flash.geom.Point;
import flash.display.Sprite;
public class Star extends Sprite
{

private var LineColor:uint=0x000000;//默认是黑色
public function Star()
{

}

public function clone():Star
{
return new Star();
}

//创建星形
//参数第一个意思长轴,第二个短轴,n为边数
public function CreatStar(long_radius:Number,shor_radius:Number,n:int=5,fillcolor:uint=0xffffff,alpha:Number=1):void
{
this.graphics.lineStyle(1,color);
if (n <= 0) return;
var angle:Number=Math.PI / n;
var tempArray:Array=new Array  ;
for (var i:int=0; i < n * 2; i++)
{
if (i % 2 == 0)
{
var l_px:Number=long_radius * Math.cos(i * angle);
var l_py:Number=long_radius * Math.sin(i * angle);
tempArray.push(new Point(l_px,l_py));
}
else
{
var s_px:Number=shor_radius * Math.cos(i * angle);
var s_py:Number=shor_radius * Math.sin(i * angle);
tempArray.push(new Point(s_px,s_py));
}
}

this.graphics.beginFill(fillcolor,alpha);
this.graphics.moveTo(tempArray[0].x,tempArray[0].y);
for (var j:int=0; j< n * 2; j++)
{

drawPoint(tempArray[j]);
}
this.graphics.lineTo(tempArray[0].x,tempArray[0].y);
this.graphics.endFill();

}
//绘制线程序
private function drawPoint(point:Point):void
{
this.graphics.lineTo(point.x,point.y);
}
//设置颜色
public function set color(value:uint):void
{
this.LineColor=value;
}
//获取颜色
public function get color():uint
{
return this.LineColor;
}
//清除图像
public function clear():void
{
this.graphics.clear();
}

}
}


下面就是创建绘制过程,绘制一个底层,矩形,创建一些星星。这样就能够实现欧盟旗的图案。

这个星星 通过圆形分布,就会产生一定分布情形

package
{
import flash.display.Sprite;
import org.summerTree.graphics.Star;
import flash.filters.GlowFilter;

public class Test2 extends Sprite
{

public function Test2()
{
init();
}
private function init():void
{
//创建的星星图案,利用分布关系进行对星星分布
this.graphics.lineStyle(1);
this.graphics.beginFill(0x0142FE);
this.graphics.drawRect(50,50,420,300);
this.graphics.endFill();
var perAngle:Number=2*Math.PI/12;//圆形分布
for (var i:int=0; i<12; i++)
{
var star:Star=new Star();
star.color=0xFFFF00;
star.CreatStar(15,6,5,0xFFFF00);
star.rotation=-90;
star.x=250+100*Math.cos(i*perAngle);
star.y=200+100*Math.sin(i*perAngle);
addChild(star);
}

}
}
}


扩展:有了这些星星图案之后,我们可以创作我们的国旗,或者其他国家的国旗,但是鉴于国旗是神圣的,不能冒犯,只能当作介绍使用

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: