AS2.0这我们供给了一些绘图体例,操纵这些体例,我们可以绘制一些图形。下面来熟悉一下这些体例。首先是画直线,要画线应先确定线的类型等,AS供给的是:
lineStyle() 体例:该体例确定线条的类型。 常用款式:MC.lineStyle(粗细,颜色,透明度)。该体例还有其它一些参数,本文就不介绍了。 好比:my_mc. lineStyle(1,0xff0000,100) 这就指了然线条粗细为1,颜色是红色,透明度为100%。
有了线条样式后就可以画直线了,首先将画笔移到要起头画直线的肇端点上,AS供给了: moveTo()体例:该体例将画笔移到起画点上。 用法:MC.moveTo(x,y);
起画点有了,就可以画线了,AS供给了: lineTo()体例: 该体例将从起画点到终点画一条直线,并将起画点移到终点。 用法:MC.lineTo(x,y) 有了上面的三个体例就可以画直线了,下面就画一条:
this.lineStyle(1,0xff0000,100); this.moveTo(0,0); this.lineTo(200,200);
测试影片,上面的代码画了一条从(0,0)到(200,200)的红色直线。
下面扩展一下,画个三角形:
this.lineStyle(1,0xff0000,100); this.moveTo(200,200); this.lineTo(300,200); this.lineTo(250,300); this.lineTo(200,200);
我想我们绘画,必定不会甘愿宁可只画一些线条,还想画一些外形,下面的体例对我们这种愿望供给了可能。
beginFill()体例:该体例从字面上就能理解,起头填充。 用法:MC.beginFill(颜色,透明度)
endFill()体例:用beginFill()中的颜色填充图形。 好比将上面的三角形填上蓝色:
this.lineStyle(1,0xff0000,100); this.beginFill(0x0000ff,100); this.moveTo(200,200); this.lineTo(300,200); this.lineTo(250,300); this.lineTo(200,200); ebdFill();
测试影片,会看到一个红色笔触蓝色填充的三角形。
若是想要无笔触的三角形,那么上面第一句不要就行了。
看起来到今朝为止,我们已经自认为已学会了用AS绘图了,很想伎痒画点什么玩意儿,好吧,就知足你吧,下面我们来画一个五星吧^_^
用矩形工具画一个与舞始一样大的黑色矩形。为什么要画这个?很简单,黑色布景下红五星要雅观些。为什么不直接将文档的布景色设为黑色?因为良多网站插入的swf文件默认是透明的,好比我们论坛。当然你完全可以连这个黑色矩形都用AS来完成。
将下列代码输入到帧动作面板中:
this.createEmptyMovieClip("wx_mc",this.getNextHighestDepth()); wx_mc._x = Stage.width/2; wx_mc._y = Stage.height/2; wx_mc.beginFill(0xFF0000,100); wx_mc.moveTo(0,0); wx_mc.lineTo(0,-100); wx_mc.lineTo(25,-30); wx_mc.lineTo(0,0); wx_mc.endFill(); wx_mc.beginFill(0xee0202,100); wx_mc.moveTo(0,0); wx_mc.lineTo(0,-100); wx_mc.lineTo(-25,-30); wx_mc.lineTo(0,0); wx_mc.endFill(); for(i=0;i<5;i++){ wx_mc.duplicateMovieClip("wx1"+i,this.getNextHighestDepth()); wx1 = eval("wx1"+i); wx1._rotation = i*72; } this.createEmptyMovieClip("xg_mc",this.getNextHighestDepth()); xg_mc._x = Stage.width/2; xg_mc._y= Stage.height/2; xg_mc.lineStyle(1,0xeed600,100); xg_mc.moveTo(0,-120); xg_mc.lineTo(0,-140); xg_mc.moveTo(10,-160); xg_mc.lineTo(10,-180); for(j=0;j<37;j++){ xg_mc.duplicateMovieClip("xg"+j,this.getNextHighestDepth()); xg1_mc = eval("xg"+j); xg1_mc._rotation = j*10; }
测试影片,结果出来了。
代码分析:
首先建立一个空的MC“wx_mc”用来绘制五星。并将wx_mc放到舞中心。 this.createEmptyMovieClip("wx_mc",this.getNextHighestDepth()); wx_mc._x = Stage.width/2; wx_mc._y = Stage.height/2; 接下来画一个红色三角形,从下面的代码中可以看到,三角形的右下角在wx_mc的注册点上,即舞台中心,这一点很主要,因为我们后面要扭转这个三角形。 wx_mc.beginFill(0xFF0000,100); wx_mc.moveTo(0,0); wx_mc.lineTo(0,-100); wx_mc.lineTo(25,-30); wx_mc.lineTo(0,0); wx_mc.endFill(); 接下来,继续绘图又画了一个三角形,这个三角形与第一个三角形刚好水平相反,这样就组成了五星的一只角,而这个三角形的颜色比第一个三角形略深,这样就形成了立体感。 wx_mc.beginFill(0xee0202,100); wx_mc.moveTo(0,0); wx_mc.lineTo(0,-100); wx_mc.lineTo(-25,-30); wx_mc.lineTo(0,0); wx_mc.endFill(); 有了一只角了,要形成五星就简单了,复制5份,然后每份扭转360/5x份数,五星就绘成了。 for(i=0;i<5;i++){ wx_mc.duplicateMovieClip("wx1"+i,this.getNextHighestDepth()); wx1 = eval("wx1"+i); wx1._rotation = i*72; } 五星画好了,还想加些辉煌,那又新建一个MC,用来画辉煌,就在五星外围画一条直线,然后复制直线36份,每10度放一份就行了。用同样的体例画第二层辉煌。 this.createEmptyMovieClip("xg_mc",this.getNextHighestDepth()); xg_mc._x = Stage.width/2; xg_mc._y= Stage.height/2; xg_mc.lineStyle(1,0xeed600,100); xg_mc.moveTo(0,-120); xg_mc.lineTo(0,-140); xg_mc.moveTo(10,-160); xg_mc.lineTo(10,-180); for(j=0;j<37;j++){ xg_mc.duplicateMovieClip("xg"+j,this.getNextHighestDepth()); xg1_mc = eval("xg"+j); xg1_mc._rotation = j*10; }
上面画的图形全数是直线的,这时我们又想画点花儿什么的,需要用到曲线,有画曲线的体例吗?有,下面就来进修
curveTo() 体例:该体例画一条由起画点经节制点到终点的一条曲线。 用法:MC. curveTo(节制点x,节制点y,终点x,终点y);
有了画曲线的体例那就画个花儿吧。
代码:
this.createEmptyMovieClip("mh_mc",this.getNextHighestDepth()); mh_mc._x = Stage.width /2; mh_mc._y = Stage.height/2; mh_mc.beginFill(0xff0000,100); mh_mc.moveTo(0,0); mh_mc.curveTo(-20,-25,-10,-45); mh_mc.curveTo(0,-60,10,-45); mh_mc.curveTo(20,-25,0,0); mh_mc.endFill(); for(i=0;i<5;i++){ mh_mc.duplicateMovieClip("mh"+i,this.getNextHighestDepth()); mh1_mc = eval("mh"+i); mh1_mc._rotation= i*72; }
现实上这个花的画法跟五星差不多,只是这个是曲线的而已。
(责任编辑:admin) |