2013-03-27 62 views
0

我正在創建一個遊戲,我正在試圖畫一條跟隨着我的手指的線。我正在使用椋鳥圖形axtension爲此,這是工作非常好,你可以看到我是如何做到這一點。畫一條跟隨你的手指的線

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)

我不知道如何實現這個笑,如果有人能指出我在正確的方向。

回答

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中設置)。

+0

+1。打字幾乎正是這個,但你的顏色操作更整潔。 @vincent,請注意你需要對你的'_endPoint'應用相同的比例縮放。 – 2013-03-27 08:20:37

+0

你會如何計算這一點?非常抱歉,數學不是我最強烈的觀點:( – vincent 2013-03-27 08:32:31

+0

那麼,學習數學將會幫助你很多事情,一旦你開始沉迷於編程:)首先,你計算你必須繪製的部分:var part :Number = 50.0/lineLength;'然後你計算X&Y爲:'newX = _startpoint.x +(_ endpoint.x-_startpoint.x)* part;'(對於Y開關'.x'代表'.y')。 – Vesper 2013-03-27 08:37:17

相關問題