收藏 分销(赏)

用鼠标任意画线.doc

上传人:s4****5z 文档编号:8772339 上传时间:2025-03-01 格式:DOC 页数:41 大小:165KB 下载积分:10 金币
下载 相关 举报
用鼠标任意画线.doc_第1页
第1页 / 共41页
用鼠标任意画线.doc_第2页
第2页 / 共41页


点击查看更多>>
资源描述
用鼠标任意画线 效果:可按住鼠标任意画线,可作简单的涂鸭工具 代码: 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; }; } 用鼠标任意画直线 效果:类似flash中的直线工具 代码: 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); }; 用鼠标任意画矩形 效果:类似flash中的矩形工具 代码: 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); }; 用鼠标任意画圆、椭圆 效果:类似flash中的工具 代码: 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); 代码: 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制作。zjs35@"; // 文本中的内容 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) {
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服