|
首页 | 名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
用Action Script进行控制,可以随机画出各种图形,该教程为系列讲座,提供了许多很有用的AS代码…… 使用方式:把代码拷到帧中就可看到效果 createEmptyMovieClip("xian",1); with (xian) { _root.onMouseMove = function() { if (draw) { _root.lineStyle(0,0x000000, 100); _root.lineTo(_root._xmouse,_root._ymouse); } }; _root.onMouseDown = function() { draw = true; _root.moveTo(_root._xmouse,_root._ymouse); }; _root.onMouseUp = function() { draw = false; }; } 用鼠标任意画直线 createEmptyMovieClip("line", n); with (line) { lineStyle(1, 0x000000, 100); moveTo(0, 0); lineTo(100, 100); line._visible = 0; } _root.onMouseDown = function() { qidian_x = _root._xmouse; qidian_y = _root._ymouse; with (line) { _x = qidian_x; _y = qidian_y; _xscale = 0; _yscale = 0; _visible = 1; } }; _root.onMouseMove = function() { endX = _root._xmouse; endY = _root._ymouse; if (_root.line != "_root.line" && key.isdown(16)){ if (Math.abs(endX-qidian_x)>Math.abs(endY-qidian_y)){ setProperty(_root.line, _xscale, endX-qidian_x); setProperty(_root.line,_yscale, endX-qidian_x); } else { setProperty(_root.line, _xscale, endY-qidian_y); setProperty(_root.line, _yscale, endY-qidian_y); } } else { setProperty(_root.line, _xscale,endX-qidian_x); setProperty(_root.line, _yscale,endY-qidian_y); } }; _root.onMouseUp = function() { if (_root._xmouse-qidian_x != 0) { i++; Objectx = "Copy" add i; duplicateMovieClip(_root.line, Objectx, i); setProperty(Objectx, _x, qidian_x); setProperty(Objectx, _y, qidian_y); _root.i = i; } setProperty(_root.line, _visible, 0); }; 用鼠标任意画矩形 createEmptyMovieClip("line", n); with (line) { lineStyle(0.1, 0x000000, 100); moveTo(0, 0); lineTo(100, 0); lineTo(100, 100); lineTo(0, 100); lineTo(0,0); line._visible = 0; } _root.onMouseDown = function() { qidian_x = _root._xmouse; qidian_y = _root._ymouse; with (line) { _x = qidian_x; _y = qidian_y; _xscale = 0; _yscale = 0; _visible = 1; } }; _root.onMouseMove = function() { endX = _root._xmouse; endY = _root._ymouse; if (_root.line != "_root.line" && key.isdown(16)){ if (Math.abs(endX-qidian_x)>Math.abs(endY-qidian_y)){ setProperty(_root.line,_xscale, endX-qidian_x); setProperty(_root.line, _yscale, endX-qidian_x); } else { setProperty(_root.line,_xscale, endY-qidian_y); setProperty(_root.line,_yscale, endY-qidian_y); } } else { setProperty(_root.line, _xscale,endX-qidian_x); setProperty(_root.line, _yscale,endY-qidian_y); } }; _root.onMouseUp = function() { if (_root._xmouse-qidian_x != 0) { i++; Objectx = "Copy" add i; duplicateMovieClip(_root.line,Objectx, i); setProperty(Objectx, _x, qidian_x); setProperty(Objectx, _y, qidian_y); _root.i = i; } setProperty(_root.line, _visible, 0); }; 用鼠标任意画圆、椭圆 createEmptyMovieClip("line", n); with (line) { for (n=1; n<400; n++) { a = 50*Math.cos(n*Math.PI/180); b = 50*Math.sin(n*Math.PI/180); c = 50*Math.cos((n+1)*Math.PI/180); d = 50*Math.sin((n+1)*Math.PI/180); lineStyle(0.01, 0x000000, 50); moveTo(a+50, b+50); lineTo(c+50, d+50); } line._visible = 0; } _root.onMouseDown = function() { qidian_x = _root._xmouse; qidian_y = _root._ymouse; with (line) { _x = qidian_x; _y = qidian_y; _xscale = 0; _yscale = 0; _visible = 1; } }; _root.onMouseMove = function() { endX = _root._xmouse; endY = _root._ymouse; if (_root.line != "_root.line" && key.isdown(16)){ if (Math.abs(endX-qidian_x)>Math.abs(endY-qidian_y)){ setProperty(_root.line,_xscale, endX-qidian_x); setProperty(_root.line,_yscale, endX-qidian_x); } else { setProperty(_root.line,_xscale, endY-qidian_y); setProperty(_root.line,_yscale, endY-qidian_y); } } else { setProperty(_root.line, _xscale,endX-qidian_x); setProperty(_root.line, _yscale, endY-qidian_y); } }; _root.onMouseUp = function() { if (_root._xmouse-qidian_x != 0) { i++; Objectx = "Copy" add i; duplicateMovieClip(_root.line,Objectx, i); setProperty(Objectx, _x, qidian_x); setProperty(Objectx, _y, qidian_y); _root.i = i; } setProperty(_root.line, _visible, 0); }; 两定点画虚线 MovieClip. prototype.dashTo = function(startPoint, destPoint, dashLength, spaceLength) { var x = destPoint.x-startPoint.x; var y = destPoint.y-startPoint.y; var hyp = Math.sqrt((x)*(x)+(y)*(y)); var units = hyp/(dashLength+spaceLength); var dashSpaceRatio = dashLength/ (dashLength+spaceLength); var dashX = (x/units)*dashSpaceRatio; var spaceX = (x/units)-dashX; var dashY = (y/units)*dashSpaceRatio; var spaceY = (y/units)-dashY; this.moveTo(startPoint.x, startPoint.y); while (hyp>0) { startPoint.x += dashX; startPoint.y += dashY; hyp -= dashLength; if (hyp<0) { startPoint.x = destPoint.x; startPoint.y = destPoint.y; } this.lineTo(startPoint.x,startPoint.y); startPoint.x += spaceX; startPoint.y += spaceY; this.moveTo(startPoint.x,startPoint.y); hyp -= spaceLength; } this.moveTo(destPoint.x, destPoint.y); }; createEmptyMovieClip("DrawingSpace", 1); with (DrawingSpace) { lineStyle(0, 0x000000, 100); dashTo({x:300, y:0}, {x:0, y:400}, 3, 10); } 从一点到另一点画虚线 function DrawDottedLine(targetMC, linewidth, fromX, fromY, toX, toY) { // targetMC: 目标MovieClip德InstanceName; // linewidth: 线宽; // fromX, fromY: 从(fromX, fromY)处开始画; // toX, toY: 画到(toX, toY)处; var x, y; eval(targetMC).lineStyle(lineWidth, 0x000000, 100); // 线的颜色是黑色(0x000000) eval(targetMC).moveTo(fromX, fromY); x = fromX; y = fromY; while (x<toX) { x = x+4/(Math.sqrt((toY-fromY)* (toY-fromY)+(toX-fromX)*(toX-fromX)))*(toX-fromX); y = y+4/(Math.sqrt((toY-fromY)* (toY-fromY)+(toX-fromX)*(toX-fromX)))*(toY-fromY); eval(targetMC).lineTo(x, y); x = x+4/(Math.sqrt((toY-fromY)* (toY-fromY)+(toX-fromX)*(toX-fromX)))*(toX-fromX); y = y+4/(Math.sqrt((toY-fromY)* (toY-fromY)+(toX-fromX)*(toX-fromX)))*(toY-fromY); eval(targetMC).moveTo(x, y); } } createEmptyMovieClip("obj",1);//建一空影片 DrawDottedLine("_root.obj", 1, 10, 10, 200, 300); //调用函数 从场景的左上角到鼠标画虚线 x = 0; y = 0;//场景左上角的坐标 l = 0; mx = _root._xmouse; my = _root._ymouse;//鼠标的坐标 ml = Math.sqrt(mx*mx+my*my);//三角形的斜边长 _root.moveto(0, 0);//画线的起点为场景左上角的坐标 _root.linestyle(0.1, 0x000000, 100); // 下面用三角函数求出每一段虚线的端点坐标, 然后用循环重复画一条短线和空格。直到线的终点位置。 while (l<ml) { l += 5; // 短线的长 x = l*mx/ml; y = l*my/ml; _root.lineto(x, y); // 将绘图点移动到相称于短线长的,且与短线在同一直线的位置。即一个空格 l += 5; x = l*mx/ml; y = l*my/ml; _root.moveto(x, y); } 不错的画线函数,自定义点、线的样式、填充 function Shape() { this.points = []; this.lines = false; tthis.filled = false; tthis.lineStyle = null; this.t = eval(_target); } Shape.prototype.addPoint = function(x, y) { this.points[this.points.length] = {x:x, y:y}; }; Shape.prototype.removePoint = function() { this.points.pop(); }; Shape.prototype.draw = function(w, c, a) { if (this.points.length>1) { this.lineStyle = {w:w, c:c,a:a}; this.t.lineStyle(w, c, a);var i = 0; var l = this.points.length; while (i<l) { this.t.lineTo(this.points[i]. x,this.points[i].y); ++i; } this.lines = true; } }; Shape.prototype.fill = function(c, a) { if (this.points.length>1) { if (this.lines) { this.clear(); this.t.lineStyle(this.lineStyle.w, this.lineStyle.c, this.lineStyle.a); } else { this.t.lineStyle(0,0xFFFFFF, 0); if (this.filled){ this.clear(); } } this.t.beginFill(c, a); var i = 0; var l = this.points.length; while (i<l) { this.t.lineTo(this.points[i].x,this.points[i].y); ++i; } this.t.endFill(); this.filled = true; } }; Shape.prototype.getX = function() { if (this.points.length) { return this.points[this.points.length-1].x; } }; Shape.prototype.getY = function() { if (this.points.length) { return this.points[this.points.length-1].y; } }; g = new Shape(); g.addPoint(0, 100); g.addPoint(100, 100); g.addPoint(100, 0); g.addPoint(0, 0); g.fill(0x339900, 100); g.draw(5, 0x000000, 100);系列讲座二,用AS脚本画羽毛、画正余弦、画心脏线、画螺旋线、画旋转的长方体、画烛光、画十四周体…… action画羽毛 作者:东方暖阳 onMouseDown=init; function init() {//创建羽毛,并设置羽毛各个参数及对函数的调用 feather = createEmptyMovieClip("f"+i, 10000+i++); feather.swapDepths(Math.random()*10000); feather._x = _xmouse; feather._y = _ymouse; feather._rotation = -90+Math.random()*40-20; col = Math.random()*255 << 8; radius = Math.random()*20+20; twist = Math.random()+.5; len = Math.random()*100+50; taper = Math.random()*.05+.95; x=0; onEnterFrame=grow; } function grow() {//创建函数来定义羽毛的生长、 定义羽毛的停止生长条件 angle = Math.sin(fa += twist)*Math.PI/4; feather.moveTo(x, y); feather.lineStyle(1, col, 50); feather.lineTo(x+Math.cos(angle)*radius, y+Math.sin(angle)*radius); radius *= taper; if (x++>len) { delete onEnterFrame; } }; 用as画圆: 代码: 思路:用不间断的呗线形成一个圆,实际上一个正360度多边形 _root.onLoad = function() { System.Usecodepage = true; // 这句我也不知道什么意思,加了以后就支持中文了,是从 “好笨”那里学来的,侦知道告诉我,谢谢 _root.createTextField("txtLoad", 151, 50, 280, 400, 30); // 建 一文本,名、层次、x、y、宽度、高度 _root.txtLoad.text = "这是一个画线的应用。 zjs35制作。zjs35@163.com"; // 文本中的内容 daxiao = 100;//圆的半径 yuanxin_x = 200; yuanxin_y = 150;//圆心的坐标 }; _root.onEnterFrame = function() { a = daxiao*Math.cos(n*Math.PI/180); b = daxiao*Math.sin(n*Math.PI/180);//根据圆的方程定义一个起点 c = daxiao*Math.cos((n+1)*Math.PI/180); d = daxiao*Math.sin((n+1)*Math.PI/180);//定义一个终点 createEmptyMovieClip("yuan", n); with (yuan) { lineStyle(2, 0x000000, 50);//定义线的样式 moveTo(a+yuanxin_x, b+yuanxin_y); lin 画正多边形 代码: on (release) { daxiao=aa; //获取多边形的大小,以像素为单位 bianshu = bb; // 获取边数,整数,从3开始,到无穷大,n多边形就是圆 jiaodu = 360/bianshu; //得到每个等分的角度 for (n=1; n<=bianshu; n++) { //for循环,由bianshu来控制循环的次数,也就是要画的多边形的边数 a = daxiao*math.cos(n*jiaodu*math.pi/180); b = daxiao*math.sin(n*jiaodu*math.pi/180); //定义起点的坐标 c = daxiao*math.cos((n+1)*jiaodu*math.pi/180); d = daxiao*math.sin((n+1)*jiaodu*math.pi/180); //定义终点的坐标 createEmptyMovieClip("xian", n); // 创建一个空影片xian,n为层次 with (xian) { lineStyle(2, 0xff0000, 100); // 定义线的大小、颜色、透明度 moveTo(a+300, b+200); lineTo(c+300, d+200);//从起点到终点画线 } } } 用as画字母F 作者:寒蓝 代码: // 创建一个空的mc: _root.createEmptyMovieClip("myMc", 0); // 定义mc的位置: myMc._x = 100; myMc._y = 50; // 定义填充: myMc.beginFill(0xff0000, 100); colors = [0xFF0000, 0xffffff]; alphas = [100, 100]; ratios = [0, 0xFF]; matrix = {a:50, b:0, c:0, d:0, e:50, f:0, g:50, h:50, i:1}; myMc.beginGradientFill("linear", colors, alphas, ratios, matrix); // 定义画线的样式: myMc.lineStyle(1, 0xff0000, 100); // 移动初始点: myMc.moveTo(100, 0); // 连接曲线: myMc.curveTo(65, 5, 50, 50); myMc.curveTo(35, 95, 0, 100); // 连接直线 myMc.lineTo(0, 120); myMc.curveTo(45, 110, 62, 70); myMc.lineTo(90, 70); myMc.lineTo(90, 50); myMc.lineTo(70, 50); myMc.curveTo(80, 20, 100, 20); myMc.lineTo(100, 0); // 结束填充: myMc.endFill(); // 清除所画: // myMc.clear(); 画正弦线 代码: root.onLoad = function() { daxiao = 100; yuanxin_x = 00; yuanxin_y = 150; }; _root.onEnterFrame = function() { a = daxiao*Math.sin(n*Math.PI/180); c = daxiao*Math.sin((n+1)*Math.PI/180); createEmptyMovieClip("xian", n); with (xian) { lineStyle(1, 0x339900, 50); moveTo(n+yuanxin_x, a+yuanxin_y); lineTo(n+1+yuanxin_x, c+yuanxin_y); } if (n<=400) { n = n+1/2; } } 画余弦线 代码: _root.onLoad = function() { daxiao = 100; yuanxin_x = 00; yuanxin_y = 150; }; _root.onEnterFrame = function() { a = daxiao*Math.cos(n*Math.PI/180); c = daxiao*Math.cos((n+1)*Math.PI/180); createEmptyMovieClip("yuan", n); with (yuan) { lineStyle(1, 0x000000, 50); moveTo(n+yuanxin_x, a+yuanxin_y); lineTo(n+1+yuanxin_x, c+yuanxin_y); } if (n<=400) { n = n+1/2; } }; 画心脏线 代码: 这是一个用MX新增功能画线的例子,比在5中用点复制法画线简朴多了,用此方式,可动态画数学中所有的图形。 _root.onLoad = function() { daxiao = 40; // 设定心脏线的大小 }; _root.onEnterFrame = function() { a = daxiao*(2*Math.cos(n*Math.PI/180) +Math.cos(2*(n*Math.PI/180))); // 通过心脏线的方程定义起点的x坐标 b = daxiao*(2*Math.sin(n*Math.PI/180) +Math.sin(2*(n*Math.PI/180))); // 通过心脏线的方程定义起点的y坐标 c = daxiao*(2*Math.cos((n+1)*Math.PI/180) +Math.cos(2*((1+n)*Math.PI/180))); d = daxiao*(2*Math.sin((n+1)*Math.PI/180) +Math.sin(2*((1+n)*Math.PI/180))); // 同理定义终点的经x,y坐标 createEmptyMovieClip("yuan", n); // 创建一个空影片yuan with (yuan) { lineStyle(0.5, 0x000000, 100); // 定义线的大小、颜色、透明度 moveTo(a+200, b+150); lineTo(c+200, d+150); // 从起点到终点画一条线,并把图形的中央点定为(200,150) } if (n<=360) { n = n+1; } }; 画螺旋线 代码: _root.onEnterFrame = function() { a = (10+0.1*n)*Math.cos(n*Math.PI/180); b = (10+0.1*n)*Math.sin(n*Math.PI/180); c = (10+0.1*n)*Math.cos((n+1)*Math.PI/180); d = (10+0.1*n)*Math.sin((n+1)*Math.PI/180); createEmptyMovieClip("yuan", n); with (yuan) { lineStyle(2, 0x000000, 50); moveTo(a+200, b+150); lineTo(c+200, d+150); } if (n<=900) { n = n+1; } }; 旋转的长方体 代码: a = 50*Math.cos(n*Math.PI/180); b = 100*Math.sin(n*Math.PI/180); c1 = 300; c2 = 200; _root.createEmptyMovieClip("triangle", 1); with (_root.triangle) { lineStyle(1, 0x000000, 50); moveTo(a+c1, b+c2); lineTo(50*math.cos((n+90)*math.pi/180)+ c1,100*math.sin((n+90)*math.pi/180)+c2); lineTo(50*math.cos((n+180)*math.pi/180)+ c1,100*math.sin((n+180)*math.pi/180)+c2); lineTo(50*math.cos((n+270)*math.pi/180)+ c1,100*math.sin((n+270)*math.pi/180)+c2); lineTo(50*math.cos((n+360)*math.pi/180)+ c1,100*math.sin((n+360)*math.pi/180)+200); lineStyle(1, 0x000000, 50); moveTo(a+200, b+100); lineTo(50*math.cos((n+90)*math.pi/180)+ 200,100*math.sin((n+90)*math.pi/180)+100); lineTo(50*math.cos((n+180)* 用as做烛光,相称逼真。 代码: offsetX = 275; offsetY = 100; left = 0; right = 0; top = 0; leftGoal = 0; rightGoal = 0; topGoal = 0; rate = .2; decay = .9; for (var i = 0; i<shapes.length; i++) { var name = "flame"+i; createEmptyMovieClip(name, i); _root[name]._x = offsetX; _root[name]._y = offsetY; _root[name].offset = parseInt(shapes[i].split("|")[0]); _root[name].fade = parseInt(shapes[i].split("|")[1]); } createEmptyMovieClip("heat", i); heat._x = offsetX; heat._y = offsetY; checkEdge = function (cur, side, dist) { change = 0;if (cur>side) { change -= Math.random()*dist; } else if (cur<-side) { change += Math.random()*dist; } return change; }; onEnterFrame = function () { leftGoal += Math.random()*6-3; leftGoal += checkEdge(leftGoal,10, 3); rightGoal += Math.random()*6-3; rightGoal += checkEdge(rightGoal, 10,3); topGoal += Math.random()*8-4; topGoal += checkEdge(topGoal, 15, 4); leftAccel = (leftGoal-left)*rate; leftVeloc += leftAccel; leftVeloc *= decay; left += leftVeloc; rightAccel = (rightGoal-right)*rate; rightVeloc += rightAccel; rightVeloc *= decay;right += rightVeloc; topAccel = (topGoal-top)*rate; topVeloc += topAccel; topVeloc *= decay;top += topVeloc; for (var i = 0; i<shapes.length; i++) { with (_root["flame"+i]) { clear();colors = [0xFCE39C, 0xF4AC35]; alphas = [_root["flame"+i].fade, _root["flame"+i].fade-20]; ratios = [70, 255]; matrix = {matrixType:"box", x:-50, y:50, w:100, h:200, r:0}; beginGradientFill("radial",colors, alphas, ratios, matrix); lineStyle(1, 0x000000, 0); moveTo(0-left+right,0-top-_root ["flame"+i].offset*2); curveTo(40+_root["flame"+i]. offset+right, 180,0, 200); curveTo(-40-_root["flame"+i]. offset-left, 180, 0-left+right, 0-top-_root["flame"+i].offset*2); endFill(); } } with (_root.heat) { clear();colors = [0x986932, 0x986932]; alphas = [70, 0]; ratios = [20, 255]; matrix = {matrixType:"box", x:-20-left/2, y:120-top, w:40+right/2,h:120+top, r:0 }; beginGradientFill("radial", colors, alphas, ratios, matrix); lineStyle(1,0x000000, 0); moveTo(-50, 0); lineTo(50, 0); lineTo(50, 200); lineTo(-50, 200); lineTo(-50,0); endFill(); } duplicateMovieClip( _root["flame"+(shapes.length-1)], "shapeMask",shapes.length+1); heat.setMask(shapeMask); }; 十四周体代码: _root.onLoad = function() { c1 = 200; c2 = 250; c3 = 50; c4 = 10; }; _root.onEnterFrame = function() { aa = 100; bb = 100; // 控制横向 cc = _root.right_s3.getvalue(); dd = _root.right_s4.getvalue(); ee = _root.right_s5.getvalue(); ff = _root.right_s6.getvalue(); gg = _root.right_s7.getvalue(); daxiao1 = aa; daxiao2 = bb; sutu = cc; zhox = ee; bianshu1 = dd; // 控制速度和方向 _root.createEmptyMovieClip("triangle", 1); lineStyle(0, 0x000000, 100); with (_root.triangle) { // 画虚线 a1 = daxiao2*math.sin((n+1*60)*math.pi/180); b1 = daxiao1*math.cos((n+1*60)*math.pi/180); a2 = daxiao2*math.sin((n+(i+1)*60)*math.pi/180); b2 = daxiao1*math.cos((n+(i+1)*60)*math.pi/180); lineStyle(1, 0xff0000,100); // 中面的6个点 moveTo(daxiao2*math.sin((n+1*60) *math.pi/180)+c1,daxiao1*math.cos ((n+1*60)*math.pi/180)+c2-gg-c3); lineTo(daxiao2*math.sin((n+6*60) *math.pi/180)+c1,daxiao1*math.cos ((n+6*60)*math.pi/180)+c2-gg-c3); moveTo(daxiao2*math.sin((n+3*60) *math.pi/180)+c1,daxiao1*math.cos ((n+3*60)*math.pi/180)+c2-gg-c3); lineTo(daxiao2*math.sin((n+2*60) *math.pi/180)+c1,daxiao1*math.cos ((n+2*60)*math.pi/180)+c2-gg-c3); moveTo(daxiao2*math.sin((n+5*60) *math.pi/180)+c1,daxiao1*math.cos ((n+5*60)*math.pi/180)+c2-gg-c3); lineTo(daxiao2*math.sin((n+4*60) *math.pi/180)+c1,daxiao1*math.cos ((n+4*60)*math.pi/180)+c2-gg-c3); // 连上下的12个点 moveTo(daxiao2*math.sin((n+1*60) *math.pi/180)+c1,daxiao1*math.cos ((n+1*60)*math.pi/180)+c2-gg); 返回类别: Flash教程 上一教程: FlashMX 视频教程(22)-实例1绘制月亮 下一教程: Flash课件中测试题信手拈来 您可以阅读与"用Flash AS实现画图的具体讲解"相关的教程: · Flash中利用遮照实现图片过渡 · flash实现的简朴虚拟现实:商品展示效果 · flash场景之间相互跳转的实现方式 · 用FLASH AS实现鼠标画圆的效果 · Flash中百叶窗效果的实现 |
快精灵印艺坊 版权所有 | 首页会员中心在线印刷在线编辑付款方式索取样品设计指南连锁门店 |