2010-06-11 56 views
0

我坚持想着去有关设置线段的位置的最好方式,我有一个类线(长度,角度,以前)由一类名为多边形..现在我有:手动设置对象的位置或让对象完成所有操作?

public class Line extends Sprite { 
    public function Line(length:Number, angle:Number, previous:Line = null) { 
     if (previous != null) { 
      this.x = previous.end.x; 
      this.y = previous.end.y; 
     } else { 
      this.x = 0; 
      this.y = 0; 
     } 
     /**/ 
    } 
} 
现在

,这是最好的做法还是我应该做:

Polygon.addLine(length:Number, angle:Number):void { 
    var previous = (_line.length == 0) ? null : _line[_line.length - 1]; // Array containing all Lines 
    var line:Line = new Line(length, angle, previous); 
    line.x = (_line.length == 0) ? 0 : previous.end.x; 
    line.y = (_line.length == 0) ? 0 : previous.end.y; 
    /**/ 
} 

有一点要补充,线路仅在该应用程序使用的多边形。

回答

2

编辑:完全重写我的答案基于您的评论...

好了,你总是有一个Line类,问题是放在哪里的逻辑添加一行到多边形。

Line男星假定有一个可选的前身Line对象。如果你改变这个,所以CTor采取可选的Point,将会减少耦合。未来可能出现的其他类也可以使用起点,长度和角度构造线条。所以CTor方法从这个角度看起来很好。

此外,一个多边形基本上是一串连接的线(和你的评论所暗示的弧),因此计算线的终点的逻辑似乎确实属于Line类。同样,这种方式可能的Line其他用户将不必重复Polygon的代码。

前面已经提到的,还有第三条路:
例如,您可以创建一个LineFactory类,基于起始点,长度和角度创建Line对象。然后该工厂功能将执行计算并设置该行的开始和结束设置终点。

+0

每种方法会有一个Line类,我只是想知道,如果它是更好的做法,为线设置它自己的X,Y基于关闭多边形的前行,或者多边形应该做的所有的自身定位。 – 2010-06-11 07:54:56

+0

关掉你的版本,我开始用这种方式..但是我遇到了一个问题,这个对象是根据Polygon里面的单独线条设置的。 Line具有.angle,.length和.end属性。 如果我在曲线[2]的端点上添加了一个弧对象,那么弧起始角将是Line [1] .angle,停止角将是Line [3] .angle 和Line。角度是基于以前的Line.angle,而不是偏离中心的x,y – 2010-06-11 08:06:53