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度多边形
应用:按此法可画任意的图形,如抛物线,螺旋线等,只需把方程修改即可,第2 个代码就是一个应用,画椭圆。
_root.onLoad = function() { System.Usecodepage = true; // 这句我也不知道什么意思,加了以后就支持中文了,是从“好笨”那里学来的,誰知道告诉我,谢谢 _root.createTextField("txtLoad", 151, 50, 280, 400, 30); // 建 一文本,名、层次、x、y、宽度、高度 _root.txtLoad.text = "这是一个画线的应用。zjs35制作。[email protected]"; // 文本中的内容 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); lineTo(c+yuanxin_x, d+yuanxin_y);//从起点到终点画线 } if (n<=360) { n = n+1; }//控制画线的长度,刚好一个圆,1表示画线的速度 };
画正多边形
代码:
这是一个画正多边形的程序,思路:把一个圆划分成n等分,把这些点連接起来 ,下面是按钮上代码,另外在场景中建两可输入文本框,名为aa,bb。
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)*math.pi/180)+200,100*math.sin((n+180)*math.pi/180)+100); lineTo(50*math.cos((n+270)*math.pi/180)+200,100*math.sin((n+270)*math.pi/180)+100); lineTo(50*math.cos((n+360)*math.pi/180)+200,100*math.sin((n+360)*math.pi/180)+100); lineStyle(1, 0x000000, 30); moveTo(a+200, b+100); lineTo(a+c1, b+c2); moveTo(50*math.cos((n+90)*math.pi/180)+c1,100*math.sin((n+90)*math.pi/180)+c2); lineTo(50*math.cos((n+90)*math.pi/180)+200,100*math.sin((n+90)*math.pi/180)+100); moveTo(50*math.cos((n+180)*math.pi/180)+c1,100*math.sin((n+180)*math.pi/180)+c2); lineTo(50*math.cos((n+180)*math.pi/180)+200,100*math.sin((n+180)*math.pi/180)+100); moveTo(50*math.cos((n+270)*math.pi/180)+c1,100*math.sin((n+270)*math.pi/180)+c2); lineTo(50*math.cos((n+270)*math.pi/180)+200,100*math.sin((n+270)*math.pi/180)+100); }
用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); lineTo(daxiao2*math.sin((n+2*60)*math.pi/180)+c1,daxiao1*math.cos((n+2*60)*math.pi/180)+c2-gg); moveTo(daxiao2*math.sin((n+3*60)*math.pi/180)+c1,daxiao1*math.cos((n+3*60)*math.pi/180)+c2-gg); lineTo(daxiao2*math.sin((n+4*60)*math.pi/180)+c1,daxiao1*math.cos((n+4*60)*math.pi/180)+c2-gg); moveTo(daxiao2*math.sin((n+5*60)*math.pi/180)+c1,daxiao1*math.cos((n+5*60)*math.pi/180)+c2-gg); lineTo(daxiao2*math.sin((n+6*60)*math.pi/180)+c1,daxiao1*math.cos((n+6*60)*math.pi/180)+c2-gg); // 中面的6个点,但连线不一样,注意 moveTo(daxiao2*math.sin((n+1*60)*math.pi/180)+c1,daxiao1*math.cos((n+1*60)*math.pi/180)+c2-gg); lineTo(daxiao2*math.sin((n+1*60)*math.pi/180)+c1,daxiao1*math.cos((n+1*60)*math.pi/180)+c2-gg-c3); moveTo(daxiao2*math.sin((n+2*60)*math.pi/180)+c1,daxiao1*math.cos((n+2*60)*math.pi/180)+c2-gg); 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+3*60)*math.pi/180)+c1,daxiao1*math.cos((n+3*60)*math.pi/180)+c2-gg); lineTo(daxiao2*math.sin((n+3*60)*math.pi/180)+c1,daxiao1*math.cos((n+3*60)*math.pi/180)+c2-gg-c3); moveTo(daxiao2*math.sin((n+4*60)*math.pi/180)+c1,daxiao1*math.cos((n+4*60)*math.pi/180)+c2-gg); lineTo(daxiao2*math.sin((n+4*60)*math.pi/180)+c1,daxiao1*math.cos((n+4*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); lineTo(daxiao2*math.sin((n+5*60)*math.pi/180)+c1,daxiao1*math.cos((n+5*60)*math.pi/180)+c2-gg-c3); moveTo(daxiao2*math.sin((n+6*60)*math.pi/180)+c1,daxiao1*math.cos((n+6*60)*math.pi/180)+c2-gg); lineTo(daxiao2*math.sin((n+6*60)*math.pi/180)+c1,daxiao1*math.cos((n+6*60)*math.pi/180)+c2-gg-c3); //取下面的顶点,及3个点并连线 lineStyle(1, 0x336600, 60); moveTo(c1, c2-gg-c3-c3+150+c3); lineTo((daxiao2-c4)*math.sin((n+5*30)*math.pi/180)+c1,daxiao1 *math.cos((n+5*30)*math.pi/180)+c2-gg-c3-c3+150); moveTo(c1, c2-gg-c3-c3+150+c3); lineTo((daxiao2-c4)*math.sin((n+9*30)*math.pi/180)+c1,daxiao1 *math.cos((n+9*30)*math.pi/180)+c2-gg-c3-c3+150); moveTo(c1, c2-gg-c3-c3+150+c3); lineTo((daxiao2-c4)*math.sin((n+1*30)*math.pi/180)+c1,daxiao1 *math.cos((n+1*30)*math.pi/180)+c2-gg-c3-c3+150); // 下面3、6个点连接 moveTo((daxiao2-c4)*math.sin((n+5*30)*math.pi/180)+c1,daxiao1 *math.cos((n+5*30)*math.pi/180)+c2-gg-c3-c3+150); lineTo(daxiao2*math.sin((n+2*60)*math.pi/180)+c1,daxiao1 *math.cos((n+2*60)*math.pi/180)+c2-gg); moveTo((daxiao2-c4)*math.sin((n+5*30)*math.pi/180)+c1,daxiao1 *math.cos((n+5*30)*math.pi/180)+c2-gg-c3-c3+150); lineTo(daxiao2*math.sin((n+3*60)*math.pi/180)+c1,daxiao1 *math.cos((n+3*60)*math.pi/180)+c2-gg); moveTo((daxiao2-c4)*math.sin((n+9*30)*math.pi/180)+c1,daxiao1 *math.cos((n+9*30)*math.pi/180)+c2-gg-c3-c3+150); lineTo(daxiao2*math.sin((n+4*60)*math.pi/180)+c1,daxiao1*math.cos((n+4*60)*math.pi/180)+c2-gg); moveTo((daxiao2-c4)*math.sin((n+9*30)*math.pi/180)+c1,daxiao1 *math.cos((n+9*30)*math.pi/180)+c2-gg-c3-c3+150); lineTo(daxiao2*math.sin((n+5*60)*math.pi/180)+c1,daxiao1*math.cos((n+5*60)*math.pi/180)+c2-gg); moveTo((daxiao2-c4)*math.sin((n+1*30)*math.pi/180)+c1,daxiao1 *math.cos((n+1*30)*math.pi/180)+c2-gg-c3-c3+150); lineTo(daxiao2*math.sin((n+1*60)*math.pi/180)+c1,daxiao1*math.cos((n+1*60)*math.pi/180)+c2-gg); moveTo((daxiao2-c4)*math.sin((n+1*30)*math.pi/180)+c1,daxiao1 *math.cos((n+1*30)*math.pi/180)+c2-gg-c3-c3+150); lineTo(daxiao2*math.sin((n+6*60)*math.pi/180)+c1,daxiao1*math.cos((n+6*60)*math.pi/180)+c2-gg); // 取上面的顶点,并连线 moveTo(c1, c2-gg-c3-c3-c3); lineTo((daxiao2-c4)*math.sin((n+210)*math.pi/180)+c1,(daxiao1) *math.cos((n+210)*math.pi/180)+c2-gg-c3-c3); moveTo(c1, c2-gg-c3-c3-c3); lineTo((daxiao2-c4)*math.sin((n+330)*math.pi/180)+c1,(daxiao1) *math.cos((n+330)*math.pi/180)+c2-gg-c3-c3); moveTo(c1, c2-gg-c3-c3-c3); lineTo((daxiao2-c4)*math.sin((n+1*90)*math.pi/180)+c1,(daxiao1) *math.cos((n+1*90)*math.pi/180)+c2-gg-c3-c3); // 中上面的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); // 上面3、6个点连接 moveTo((daxiao2-c4)*math.sin((n+90)*math.pi/180)+c1,(daxiao1) *math.cos((n+90)*math.pi/180)+c2-gg-c3-c3); lineTo(daxiao2*math.sin((n+1*60)*math.pi/180)+c1,daxiao1 *math.cos((n+1*60)*math.pi/180)+c2-gg-c3); moveTo((daxiao2-c4)*math.sin((n+90)*math.pi/180)+c1,(daxiao1) *math.cos((n+90)*math.pi/180)+c2-gg-c3-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-c4)*math.sin((n+210)*math.pi/180)+c1,(daxiao1) *math.cos((n+210)*math.pi/180)+c2-gg-c3-c3); lineTo(daxiao2*math.sin((n+3*60)*math.pi/180)+c1,daxiao1 *math.cos((n+3*60)*math.pi/180)+c2-gg-c3); moveTo((daxiao2-c4)*math.sin((n+210)*math.pi/180)+c1,(daxiao1) *math.cos((n+210)*math.pi/180)+c2-gg-c3-c3); lineTo(daxiao2*math.sin((n+4*60)*math.pi/180)+c1,daxiao1 *math.cos((n+4*60)*math.pi/180)+c2-gg-c3); moveTo((daxiao2-c4)*math.sin((n+330)*math.pi/180)+c1,(daxiao1) *math.cos((n+330)*math.pi/180)+c2-gg-c3-c3); lineTo(daxiao2*math.sin((n+5*60)*math.pi/180)+c1,daxiao1 *math.cos((n+5*60)*math.pi/180)+c2-gg-c3); moveTo((daxiao2-c4)*math.sin((n+330)*math.pi/180)+c1,(daxiao1) *math.cos((n+330)*math.pi/180)+c2-gg-c3-c3); lineTo(daxiao2*math.sin((n+6*60)*math.pi/180)+c1,daxiao1*math.cos((n+6*60)*math.pi/180)+c2-gg-c3); } n = n+sutu; }