语录提交--登陆--注册--论坛交流--站长博客

AS菜鸟教程18 用ActionScript画图

[作者:thymecd][日期:2008-01-23][导航:Flash教程 >> ActionScript2 >> AS菜鸟教程18 用ActionScript画图]
  Flash MX ActionScript的绘画方法位于动作面板的“对象”/“影片”/“MovieClip”/“绘画方法”目录下面。使用ActionScript的绘画方法可以定义线条样式、画直线、曲线、对图形进行填充以及清除所画图形等操作。

18.1  动态创建影片剪辑
由于绘画方法包含在影片剪辑中,所以在使用绘画方法前要创建影片剪辑。使用MovieClip的createEmptyMovieClip方法可以动态地创建影片剪辑,如下所示:
_root.createEmptyMovieClip("MovieClipName", depth);
其中,MovieClipName是创建的影片剪辑实例名,depth是创建的影片剪辑所在的深度级别。
18.2  绘画方法
18.2.1  lineStyle
MovieClipName.lineStyle ([thickness[,rgb[,alpha]]])
linStyle命令定义将要绘制的线条的样式,其中,参数thickness定义线条的粗细,rab参数定义线条的颜色,alpha参数定义线条的透明度。如:
lineStyle(0, 0x000000, 100);    //定义极细线条,颜色为黑色,不透明
lineStyle(2, 0xFF0000, 50);     //定义线条宽度为2,颜色为红色,透明为50%
定义了线条样式后即可以使用绘线命令绘制线条,绘制的线条都将保持与lineStyle命令所定义一致的样式,直到使用新的lineStyle命令为止。
18.2.2  moveTo
MovieClipName.moveTo (x,y)
moveTo命令将当前绘画位置移到指定的坐标点(x,y)。
moveTo命令一般用于新起一点开始画线。
18.2.3  lineTo
MovieClipName.lineTo (x,y)
使用当前线条样式从当前绘画位置向(x,y)绘制直线;当前绘画位置随后被设置为(x,y)。
18.2.4  curveTo
MovieClipName.curveTo (controlX,controlY,anchorX, anchorY)
使用由(controlX,controlY)指定的控制点,以当前的线条样式绘制从当前绘画位置到(anchorX,anchorY)的曲线。当前的绘画位置随后设置为(anchorX,anchorY)。使用curveTo命令最关键的就是控制点的确定。控制点相当于是所绘曲线起始点和终点切线的交点,如图18-1所示。
 

图18-1  控制点示意图
18.2.5  beginFill
MovieClipName.beginFill ([rgb[,alpha]])
beginFill命令表示填充的开始,参数rgb表示要用于填充的颜色,alpha表示透明度。在使用beginFill命令后所绘制的闭合路径将自动以beginFill命令指定的颜色和颜色进行填充。
18.2.6  beginGradientFill
MovieClipName.beginGradientFill (fillType, colors, alphas, ratios, matrix)
beginGradientFill用于在闭合路径中填充渐变色,参数fillType有两个值:linear表示线性渐变,radial表示放射渐变。colors是一个数组,包括要在渐变中使用的RGB十六进制颜色值。alphas也是一个数组,包括与colors数组中颜色相对应的Alpha值;有效值为0~100。如果该值小于0,则Flash使用0。如果该值大于100,则Flash使用100。ratios是颜色配额的数组;有效值为0~255。该值按100%定义了对颜色进行采样处的宽度的百分比。matrix 一个变形矩阵,是带有下列两组属性之一的一个对象:
= a、b、c、d、e、f、g、h、i,它们用于描述下列形式的 3×3 矩阵:
a  b  c
d  e  f
g  h  i
如果matrixType属性不存在,则其余参数都是必需的;如果缺少其中任何一个则该函数会失败。该矩阵缩放、平移、旋转和倾斜在(-1,-1)和(1,1)处定义的单位渐变。
= matrixType、x、y、w、h、r。 
这些属性表示下列含义:matrixType 是字符串box、x是相对于该渐变左上角父级剪辑的注册点的水平位置,y是相对于该渐变左上角父级剪辑的注册点的垂直位置,w是渐变的宽度,h是渐变的高度,r是渐变的旋转角度(以弧度为单位)。
18.2.7  endFill
MovieClipName.endFill()
对调用beginFill或beginGradientFill方法以来添加的线条或曲线应用填充。Flash使用的是对beginFill或beginGradientFill的上一次调用中指定的填充。如果当前的绘画位置不等于moveTo方法中指定的上一个位置,而且定义了填充,则用线条闭合该路径,然后进行填充。
18.2.8  clear
MovieClipName.clear()
删除与影片剪辑关联的所有绘画命令。用Flash绘画工具绘制的形状和线条不受影响。调用clear方法还会删除当前的线条样式。
18.3  练习:全脚本的图形
使用绘图方法绘制全脚本的图形不难,主要是工作量比较大,要求细心。一般来说完全使用ActionScript命令绘制复杂图形的意义不是很大,作为了解已经足够了。
下面给出文件draw.fla的所有源程序,供你参考。其中主要用到的绘图方法有lineStyle、moveTo、lineTo和curveTo,没有用到的方法请自己研究和练习。draw.fla的结果如图18-2所示(hoho,有点ugly)。


图18-2  使用绘图方法绘制的图形
 
_root.createEmptyMovieClip("girl", 1);
with (_root.girl) {
 lineStyle(0, 0x000000, 100);
 beginFill(0x000000, 100);
 moveTo(138, 164);
 curveTo(119, 160, 98, 165);
 curveTo(120, 155, 138, 164);
 moveTo(156, 166);
 curveTo(166, 162, 174, 164);
 lineTo(174, 161);
 curveTo(164, 160, 156, 166);
 endFill();
 lineStyle(2, 0x000000, 100);
 moveTo(133, 178);
 curveTo(116, 166, 104, 183);
 moveTo(132, 181);
 curveTo(116, 169, 104, 184);
 moveTo(132, 184);
 curveTo(117, 170, 104, 184);
 moveTo(128, 193);
 curveTo(119, 197, 109, 193);
 moveTo(126, 179);
 curveTo(130, 191, 121, 195);
 moveTo(117, 195);
 curveTo(106, 184, 116, 175);
 lineStyle(0, 0x000000, 100);
 moveTo(115, 179);
 curveTo(118, 180, 118, 183);
 curveTo(116, 185, 113, 183);
 curveTo(114, 190, 119, 191);
 curveTo(125, 190, 125, 185);
 curveTo(124, 177, 115, 179);
 lineStyle(2, 0x000000, 100);
 moveTo(151, 185);
 curveTo(151, 177, 160, 173);
 curveTo(168, 171, 173, 176);
 moveTo(154, 180);
 curveTo(162, 170, 171, 178);
 moveTo(163, 174);
 curveTo(170, 175, 170, 182);
 moveTo(155, 192);
 curveTo(163, 195, 167, 191);
 moveTo(160, 175);
 curveTo(153, 181, 155, 189);
 curveTo(157, 192, 161, 192);
 curveTo(171, 188, 163, 176);
 lineStyle(0, 0x000000, 100);
 moveTo(160, 180);
 curveTo(162, 182, 161, 183);
 curveTo(159, 184, 158, 182);
 curveTo(156, 187, 160, 189);
 curveTo(164, 189, 164, 185);
 curveTo(164, 180, 160, 180);
 lineStyle(2, 0x000000, 100);
 moveTo(148, 185);
 curveTo(147, 195, 153, 203);
 curveTo(147, 207, 147, 209);
 moveTo(130, 219);
 lineTo(152, 218);
 lineStyle(3, 0x000000, 40);
 moveTo(133, 225);
 lineTo(143, 225);
 lineStyle(1, 0x000000, 100);
 moveTo(174, 145);
 curveTo(176, 157, 175, 172);
 curveTo(173, 181, 172, 186);
 lineTo(169, 212);
 curveTo(169, 217, 164, 224);
 lineTo(148, 242);
 curveTo(144, 246, 135, 246);
 curveTo(112, 242, 96, 230);
 moveTo(71, 168);
 curveTo(68, 164, 63, 164);
 curveTo(58, 164, 55, 172);
 curveTo(56, 191, 68, 204);
 lineTo(74, 206);
 lineStyle(1, 0x000000, 60);
 moveTo(70, 174);
 curveTo(67, 170, 63, 169);
 curveTo(54, 174, 62, 185);
 curveTo(68, 200, 72, 192);
 moveTo(71, 180);
 curveTo(71, 177, 68, 177);
 curveTo(65, 177, 65, 180);
 curveTo(66, 185, 64, 189);
 curveTo(70, 200, 72, 189);
 curveTo(67, 184, 71, 181);
 lineStyle(1, 0x000000, 60);
 moveTo(47, 151);
 curveTo(55, 93, 113, 85);
 lineTo(115, 87);
 lineTo(116, 85);
 curveTo(170, 92, 195, 130);
 curveTo(207, 158, 194, 164);
 curveTo(207, 152, 185, 123);
 curveTo(203, 150, 189, 169);
 curveTo(193, 150, 186, 138);
 curveTo(197, 169, 179, 179);
 curveTo(190, 174, 184, 145);
 moveTo(176, 127);
 curveTo(190, 165, 178, 174);
 curveTo(184, 159, 178, 137);
 curveTo(182, 156, 173, 169);
 curveTo(179, 155, 175, 139);
 moveTo(171, 123);
 curveTo(181, 153, 164, 167);
 curveTo(176, 146, 168, 127);
 curveTo(175, 149, 159, 160);
 curveTo(171, 141, 166, 129);
 moveTo(161, 113);
 curveTo(175, 141, 144, 164);
 curveTo(161, 151, 161, 128);
 moveTo(158, 127);
 curveTo(159, 151, 143, 164);
 curveTo(157, 147, 155, 119);
 curveTo(152, 144, 120, 157);
 curveTo(157, 136, 152, 106);
 moveTo(150, 115);
 curveTo(146, 139, 130, 150);
 curveTo(140, 140, 147, 117);
 curveTo(132, 149, 113, 153);
 moveTo(145, 121);
 curveTo(139, 132, 126, 141);
 curveTo(116, 154, 97, 160);
 moveTo(118, 141);
 curveTo(103, 156, 98, 156);
 moveTo(118, 141);
 curveTo(105, 149, 98, 155);
 curveTo(87, 162, 70, 163);
 moveTo(101, 156);
 curveTo(94, 163, 72, 163);
 moveTo(71, 164);
 curveTo(72, 222, 105, 318);
 moveTo(74, 164);
 curveTo(74, 185, 78, 205);
 moveTo(77, 164);
 curveTo(75, 194, 88, 241);
 moveTo(80, 165);
 curveTo(90, 245, 101, 292);
 moveTo(72, 187);
 curveTo(73, 225, 80, 250);
 moveTo(82, 165);
 curveTo(82, 210, 103, 259);
 moveTo(85, 164);
 lineTo(84, 193);
 moveTo(90, 162);
 lineTo(85, 171);
 moveTo(95, 162);
 lineTo(84, 177);
 moveTo(172, 183);
 curveTo(180, 247, 187, 263);
 curveTo(200, 294, 195, 334);
 moveTo(171, 200);
 curveTo(174, 230, 182, 258);
 moveTo(171, 212);
 curveTo(170, 226, 183, 274);
 curveTo(196, 314, 190, 331);
 moveTo(168, 219);
 curveTo(168, 234, 176, 263);
 moveTo(165, 224);
 lineTo(168, 242);
 moveTo(163, 227);
 curveTo(161, 251, 184, 296);
 moveTo(166, 240);
 curveTo(170, 253, 171, 268);
 moveTo(173, 261);
 curveTo(175, 272, 180, 281);
 curveTo(188, 295, 189, 330);
 lineStyle(2, 0x000000, 100);
 moveTo(68, 165);
 lineTo(75, 154);
 curveTo(68, 155, 62, 150);
 curveTo(60, 150, 55, 154);
 lineTo(50, 155);
 lineTo(46, 163);
 curveTo(49, 163, 50, 161);
 curveTo(55, 162, 57, 166);
 curveTo(62, 162, 68, 165);
 moveTo(47, 159);
 lineTo(58, 159);
 curveTo(58, 156, 55, 157);
 moveTo(44, 154);
 lineTo(39, 148);
 lineTo(18, 153);
 curveTo(20, 160, 14, 167);
 lineTo(30, 161);
 curveTo(38, 164, 43, 163);
 curveTo(40, 156, 44, 154);
 moveTo(42, 157);
 lineTo(36, 159);
 lineTo(30, 157);
 moveTo(44, 154);
 curveTo(50, 150, 52, 153);
 moveTo(44, 164);
 curveTo(38, 167, 32, 166);
 lineTo(22, 170);
 lineTo(14, 170);
 lineTo(4, 177);
 curveTo(15, 179, 13, 191);
 curveTo(22, 173, 43, 166);
 curveTo(53, 182, 41, 203);
 curveTo(53, 195, 62, 209);
 lineTo(61, 196);
 moveTo(57, 168);
 curveTo(50, 169, 48, 163);
 lineStyle(1, 0x000000, 100);
 moveTo(31, 171);
 curveTo(13, 201, 21, 210);
 moveTo(37, 168);
 curveTo(15, 204, 24, 214);
 moveTo(31, 187);
 curveTo(20, 213, 31, 218);
 moveTo(35, 195);
 curveTo(27, 225, 37, 224);
 moveTo(34, 206);
 curveTo(35, 224, 40, 222);
 moveTo(44, 167);
 curveTo(33, 221, 44, 225);
 moveTo(41, 209);
 curveTo(42, 228, 52, 228);
 moveTo(47, 199);
 curveTo(43, 228, 57, 227);
 moveTo(49, 199);
 curveTo(50, 226, 60, 228);
 curveTo(71, 227, 66, 202);
 moveTo(64, 200);
 curveTo(62, 244, 54, 201);
 curveTo(61, 240, 60, 204);
 lineStyle(2, 0x000000, 100);
 moveTo(189, 169);
 curveTo(192, 166, 195, 169);
 curveTo(199, 174, 206, 176);
 curveTo(196, 181, 196, 191);
 curveTo(190, 178, 181, 179);
 curveTo(188, 182, 188, 186);
 curveTo(189, 189, 194, 188);
 moveTo(187, 173);
 lineTo(193, 175);
 moveTo(197, 184);
 lineTo(208, 189);
 lineTo(204, 193);
 curveTo(199, 190, 189, 205);
 curveTo(188, 192, 184, 190);
 curveTo(182, 189, 182, 183);
 curveTo(179, 182, 180, 179);
 lineStyle(1, 0x000000, 100);
 moveTo(198, 193);
 curveTo(207, 207, 193, 216);
 moveTo(194, 203);
 curveTo(195, 215, 188, 221);
 moveTo(189, 204);
 curveTo(192, 214, 186, 225);
 curveTo(183, 227, 178, 224);
 moveTo(180, 181);
 curveTo(178, 186, 181, 191);
 curveTo(187, 210, 182, 224);
 moveTo(177, 181);
 curveTo(176, 189, 180, 198);
 curveTo(186, 213, 179, 223);
 moveTo(181, 202);
 curveTo(181, 219, 177, 218);
 moveTo(176, 182);
 curveTo(178, 199, 174, 205);
 lineStyle(2, 0x000000, 100);
 moveTo(80, 248);
 curveTo(74, 248, 79, 253);
 lineTo(79, 259);
 lineTo(85, 265);
 moveTo(103, 293);
 curveTo(113, 319, 123, 335);
 moveTo(76, 249);
 curveTo(76, 259, 70, 263);
 curveTo(84, 271, 90, 283);
 moveTo(106, 318);
 lineTo(112, 336);
 moveTo(69, 263);
 curveTo(29, 284, 29, 295);
 curveTo(18, 331, 16, 372);
 curveTo(33, 377, 55, 374);
 curveTo(56, 369, 68, 369);
 curveTo(73, 375, 65, 377);
 moveTo(47, 292);
 curveTo(56, 312, 69, 329);
 curveTo(63, 334, 63, 340);
 moveTo(57, 312);
 curveTo(60, 339, 69, 356);
 lineTo(67, 358);
 moveTo(65, 353);
 lineTo(69, 370);
 lineStyle(1, 0x000000, 100);
 moveTo(18, 363);
 curveTo(40, 367, 48, 365);
 curveTo(55, 359, 66, 360);
 moveTo(19, 374);
 curveTo(18, 387, 20, 400);
 moveTo(64, 370);
 curveTo(65, 388, 67, 400);
 moveTo(83, 255);
 curveTo(83, 260, 80, 261);
 moveTo(137, 248);
 curveTo(137, 259, 139, 269);
 moveTo(138, 263);
 curveTo(142, 267, 148, 268);
 lineStyle(2, 0x000000, 100);
 moveTo(138, 254);
 curveTo(156, 263, 157, 310);
 curveTo(161, 327, 162, 335);
 moveTo(141, 258);
 curveTo(156, 270, 173, 273);
 moveTo(159, 269);
 curveTo(168, 289, 166, 314);
 curveTo(167, 328, 169, 336);
 moveTo(193, 287);
 lineTo(202, 298);
 curveTo(208, 336, 222, 365);
 lineTo(215, 373);
 lineTo(213, 374);
 lineTo(195, 371);
 moveTo(186, 307);
 curveTo(181, 333, 185, 337);
 lineTo(186, 342);
 moveTo(63, 344);
 curveTo(72, 338, 84, 337);
 curveTo(103, 338, 140, 335);
 curveTo(170, 335, 190, 347);
 lineTo(187, 353);
 moveTo(183, 346);
 curveTo(205, 368, 185, 396);
 lineStyle(1, 0x000000, 100);
 moveTo(213, 373);
 lineTo(213, 400);
 moveTo(136, 329);
 curveTo(136, 331, 139, 335);
 lineStyle(2, 0x000000, 20);
 moveTo(131, 324);
 curveTo(132, 325, 136, 329);
 moveTo(139, 324);
 curveTo(138, 325, 136, 329);
 lineStyle(4, 0x000000, 10);
 moveTo(131, 284);
 curveTo(141, 280, 151, 282);
 moveTo(119, 284);
 curveTo(109, 280, 100, 284);
 moveTo(123, 280);
 curveTo(126, 282, 128, 279);
 lineStyle(7, 0x000000, 10);
 moveTo(79, 343);
 curveTo(90, 339, 101, 341);
 lineTo(155, 341);
 curveTo(167, 339, 184, 349);
 moveTo(72, 396);
 curveTo(128, 389, 180, 397);
 lineStyle(2, 0x000000, 20);
 moveTo(132, 93);
 curveTo(144, 95, 152, 105);
}

[文章热度:]


上一页:AS菜鸟教程 17 组件的应用

下一页:自定义ActionScript中的几个实用函数

最新话题

网站导航

搜索

网站公告


Copyright 2007 51as.com. Some Rights Reserved.
鄂ICP备07003189号

Powered by: KingCMS 5.0.1.0217