
viits
- Class:New guy
- Integral:8
- Post:8
|
2008-08-05 18:46
|
Only poster
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); }
|
|