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); } } } }
扩展:有了这些星星图案之后,我们可以创作我们的国旗,或者其他国家的国旗,但是鉴于国旗是神圣的,不能冒犯,只能当作介绍使用
。
相关文章推荐
- flash 绘图API:绘制星星
- flash 绘图API:绘制虚线矩形
- flash绘图API:绘制植物
- flash绘图API:绘制植物(2)
- flash 绘图API:绘制虚线矩形
- flash 绘图API:绘制一棵树
- flash 绘图API:绘制错误标记
- flash 绘图API:绘制一棵树
- flash 绘图API:绘制错误标记
- flash 绘图API:绘制小鱼
- flash绘图API:绘制一条虚线
- flash绘图API:绘制三角形
- flash 绘图API:绘制秀曲线图形
- flash 绘图API:绘制基础的图形
- flash 绘图API:绘制小鱼
- flash 绘图API:绘制秀曲线图形
- flash 绘图API:绘制基础的图形
- flash 绘图API:绘制弧线
- flash 绘图API:绘制弧线
- flash绘图API:绘制植物