画一条跟在你手指上的线

时间:2013-03-27 07:50:44

标签: actionscript-3 touch-event starling-framework

我正在创建一个游戏,我正在尝试绘制一条跟随我的手指的线条。我正在使用starling graphics 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 个答案:

答案 0 :(得分:1)

如果积分足够,那么:

  1. 您计算立场点和接触点之间的距离。如果低于您的阈值,请绘制整行。
  2. 如果没有,您计算所需长度与观点和接触点之间X和Y的增量之间的比例,您将收到一个中间点,该点将作为绘制线的末尾。
  3. 要选择颜色,要么在绿色和红色之间进行HSV或RGB插值。 uint(255*lineLength/50)*0x10000+uint(255*(1.0-lineLength/50))*0x100的一个愚蠢的例子会做一段时间。此处的lineLength范围为0到50.0。
  4. 在计算完所有这些之后,你就会像你一样画一条线。

    还有一个挑剔:“宽度”一行被命名为“厚度”,在你的例子中为1(在lineStyle中与颜色一起设置)。