0

我正在创建一个游戏,我正在尝试画一条跟随我手指的线。我为此使用了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 )

我不知道如何实现这一目标,如果有人能指出我正确的方向,那就太棒了。

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 回答