0

ゲームを作成していて、指に沿って線を引こうとしています。私はこれにスターリンググラフィックスエクステンションを使用していますが、これは非常にうまく機能しており、以下でその方法を確認できます。

if (begin) {
    _startPoint = new Point(begin.globalX, begin.globalY);
    _line.graphics.lineStyle(1, 0xffffff, 1);
    addChild(_line);
} else if (moved) {
    var width:Number = MathUtils.DistanceBetweetnTwoPoints(_startPoint.x, _startPoint.y, moved.globalX, moved.globalY);
    _currentPoint = new Point(moved.globalX, moved.globalY);
    _line.graphics.clear();
    _line.graphics.moveTo(_startPoint.x, _startPoint.y);
    _line.graphics.lineTo(_currentPoint.x, _currentPoint.y);
} else if (end) {
    _line.graphics.clear();
    _endPoint = new Point(end.globalX, end.globalY);
    addBlock(_startPoint, _endPoint);
}

だから私がやりたいのは次のとおりです。Atmの瞬間、それは私の指をたどっています(開始点から現在の点まで線を引きます。しかし、最大幅を入力したいと思います。たとえば50とします。50の長さを超える場合は、指を回転方向にたどる必要があります。もうもうありませんが、それは私の指の方向を追跡し、それに向かって回転します。

そして最後に(可能かどうかはわかりませんが)、線を緑から赤に近づけると、最大長に近づきます(つまり、線全体が緑になりますが、50に近づくと赤に変わります) )。

私はこの翔をどのように達成するのか分かりません。誰かが私を正しい方向に向けることができれば素晴らしいでしょう。

4

1 に答える 1

1

ポイントで十分な場合は、次のようにします。

  1. スタンドポイントとタッチポイントの間の距離を計算します。しきい値を下回っている場合は、実線を引きます。
  2. そうでない場合は、目的の長さと、スタンドポイントとタッチポイントの間のXとYのデルタの比率を計算すると、描画された線の終点となる中間ポイントを受け取ります。
  3. 色を選択するには、緑と赤の間にHSVまたはRGB補間を使用します。の愚かな例はuint(255*lineLength/50)*0x10000+uint(255*(1.0-lineLength/50))*0x100しばらくの間行います。lineLengthここでの範囲は0から50.0です。

これらすべてを計算すると、実行したように線を引く準備が整います。

そして、ちょっとしたことです。「幅」という行の名前は「厚さ」です。これは、例では1です(lineStyle色とともに設定されています)。

于 2013-03-27T08:10:53.233 に答える