2013-03-27 5 views
0

게임을 만들고 있는데 손가락을 따라가는 선을 그리려하고 있습니다. 나는 이것을 위해 starling graphic 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입니다.

이 모든 것을 계산 한 후에는 선을 그리도록 설정되었습니다.

그리고 nitpick : "width"라는 줄의 이름은 "thickness"이며 예제에서는 1입니다 (색상과 함께 lineStyle에 설정 됨).

+0

+1. 거의 정확히 입력했지만 색상 작업이 더 깔끔하지 않았습니다. @vincent,'_endPoint'와 같은 비례 스케일링을 적용해야합니다. –

+0

그리고 그 점을 어떻게 계산 하시겠습니까? 매우 유감 스럽지만, 수학이 내게 가장 중요한 점은 아니다. ( – vincent

+0

프로그래밍을 두껍게 시작하면 수학을 배우는 것이 도움이 될 것입니다.) 우선, 그려야 할 부분을 계산합니다. 'var part : Number = 50.0/lineLength;'다음과 같이 X & Y를 계산합니다 : newX = _startpoint.x + (_ endpoint.x-_startpoint.x) * part;'('.y'의 Y 스위치'.x'). – Vesper

관련 문제