この方法でポイントをプロットする必要があります。
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 値のデルタ (2 つの値の差) が必要です。
したがって、X2 - X1 = DeltaX、およびY2 - Y1 = DeltaYです。
次に、それらのデルタを に入れMath.atan2(y:Number, x:Number):Number
ます。返される値はラジアンであると私は信じているので、度を扱うには、結果に180 / Math.PIを掛けて変換を行うことができます。
ただし、残りの計算をラジアンで再開できるため、これは実際には必要ありません。上記の値 (180/Math.PI) を変数に格納すると便利です。
ラジアンを続ける場合は、90 度をラジアンに変換することが重要です。
- 90/radiansは、一番上の行を解決するために START および END ポイントからオフセットする数値を与えます。
- -90/radiansは、最終的な結果を求めるために 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/