两定点画虚线 代码: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 (xx = 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 (ll += 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; this.filled = false; this.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 (ithis.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 (ithis.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);