import flash.geom.ColorTransform; import flash.geom.Transform; function DrawDotLine (target:MovieClip, lineWidth:Number, lineColor:Number, lineAlpha:Number, fromX:Number, fromY:Number, endX:Number, endY:Number):Void { target.lineStyle (lineWidth, lineColor, lineAlpha); target.moveTo (fromX, fromY); target.clear (); target.lineStyle (lineWidth, lineColor, lineAlpha); target.moveTo (fromX, fromY); var x1:Number = fromX; var y1:Number = fromY; if (endX > fromX) { while (x1 < endX) { x1 = x1 + 4 / (Math.sqrt (Math.pow ((endY - fromY), 2) + Math.pow ((endX - fromX), 2))) * (endX - fromX); y1 = y1 + 4 / (Math.sqrt (Math.pow ((endY - fromY), 2) + Math.pow ((endX - fromX), 2))) * (endY - fromY); target.lineTo (x1, y1); x1 = x1 + 4 / (Math.sqrt (Math.pow ((endY - fromY), 2) + Math.pow ((endX - fromX), 2))) * (endX - fromX); y1 = y1 + 4 / (Math.sqrt (Math.pow ((endY - fromY), 2) + Math.pow ((endX - fromX), 2))) * (endY - fromY); target.moveTo (x1, y1); } } else { while (x1 > endX) { x1 = x1 + 4 / (Math.sqrt (Math.pow ((endY - fromY), 2) + Math.pow ((endX - fromX), 2))) * (endX - fromX); y1 = y1 + 4 / (Math.sqrt (Math.pow ((endY - fromY), 2) + Math.pow ((endX - fromX), 2))) * (endY - fromY); target.lineTo (x1, y1); x1 = x1 + 4 / (Math.sqrt (Math.pow ((endY - fromY), 2) + Math.pow ((endX - fromX), 2))) * (endX - fromX); y1 = y1 + 4 / (Math.sqrt (Math.pow ((endY - fromY), 2) + Math.pow ((endX - fromX), 2))) * (endY - fromY); target.moveTo (x1, y1); } } } /*************************************************************/ // 画虚线 var num:Number = -1; var isDraw:Boolean = false; // 线的起点 var startX:Number = 0; var startY:Number = 0; var newColor:ColorTransform = new ColorTransform (); // 鼠标按下时开始画 _root.onMouseDown = function () { // 虚线存放容器 num++; _root.createEmptyMovieClip ("mc" + num, _root.getNextHighestDepth ()); startX = _root._xmouse; startY = _root._ymouse; isDraw = true; // newColor = new ColorTransform (0, 255, 0, 255, 0, 255, 100, 100); DrawDotLine (_root["mc" + num], 1, 0x0000FF, 100, startX, startY, _root._xmouse, _root._ymouse); }; // 从鼠标按下处 到 当前 鼠标的位置 画线 _root.onMouseMove = function () { if (isDraw) { DrawDotLine (_root["mc" + num], 1, 0x0000FF, 100, startX, startY, _root._xmouse, _root._ymouse); } }; _root.onMouseUp = function () { isDraw = false; // 为了追求效果,当停止画线后,清除原来的线,重新画一次 DrawDotLine (_root["mc" + num], 1, 0x0000FF, 100, startX, startY, _root._xmouse, _root._ymouse); }; stop (); 以上代码在Flash 8 + AS 2.0 下调试通过。