您将需要以这种方式绘制点:
90 degrees (UP from the START point) 90 degrees (UP from the END point)
| |
START- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - END
| |
90 degrees (DOWN from the START point) 90 degrees (DOWN from the END point)
一旦确定了这 6 个点(顶线 2 个,鼠标起点和终点 2 个,底线 2 个),您可以将顶线和底线的这对点与lineTo(...) 命令给你这个:
------------------------------------------------------------------------------
START END
------------------------------------------------------------------------------
要知道 START 和 END 点形成的当前角度是多少,您需要点的 X 和 Y 值的增量(两个值之间的差异)。
所以X2 - X1 = DeltaX和Y2 - Y1 = DeltaY。
然后,将这些增量放入Math.atan2(y:Number, x:Number):Number
. 我相信返回值以弧度表示,因此要使用度数,您可以通过将结果乘以180 / Math.PI来进行转换。
然而,这并不是真正必要的,因为我们可以以弧度恢复其余的计算。将上述值 (180/Math.PI) 存储在变量中会很有用。
如果我们继续使用弧度,将 90 度转换为弧度很重要。
- 90 / 弧度给了我们一个数字来偏移我们的 START 和 END 点来解决顶线。
- -90 / 弧度为我们提供了从 START 和 END 点偏移的数字,以解决底线。
换句话说...
这是我快速测试过的完整解决方案,如果它不能 100% 工作,我深表歉意:
var startPoint:Point = new Point(10, 0); //Replace by start-mouse location
var endPoint:Point = new Point(20, 0); //Replace by end-mouse location
var mouseAngle:Number = Math.atan2( endPoint.y - startPoint.y, endPoint.x - startPoint.x );
var angle:Number;
var lineHalfGap:Number = 100 * .5; //Replace 100 by your seperation value
var radians:Number = 180 / Math.PI;
angle = 90 / radians + mouseAngle;
var topOffsetX:Number = Math.cos( angle ) * lineHalfGap;
var topOffsetY:Number = Math.sin( angle ) * lineHalfGap;
angle = -90 / radians + mouseAngle;
var bottomOffsetX:Number = Math.cos( angle ) * lineHalfGap;
var bottomOffsetY:Number = Math.sin( angle ) * lineHalfGap;
var topStart:Point = new Point(startPoint.x + topOffsetX, startPoint.y + topOffsetY);
var topEnd:Point = new Point(endPoint.x + topOffsetX, endPoint.y + topOffsetY);
var bottomStart:Point = new Point(startPoint.x + bottomOffsetX, startPoint.y + bottomOffsetY);
var bottomEnd:Point = new Point(endPoint.x + bottomOffsetX, endPoint.y + bottomOffsetY);
trace(topStart, topEnd, bottomStart, bottomEnd);
显然,您必须替换/替换您自己的一些变量(例如鼠标位置和线间距的分隔值),但这应该可以解决问题。
可以在此处找到一个运行示例:
http://pierrechamberlain.ca/blog/2012/08/math-101-parallel-lines-two-points/