我一直在思考设置线段位置的最佳方法,我从类Polygon中调用了一个类Line(长度,角度,前一个)。现在我有:
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;
/**/
}
要添加的一件事,Line仅在此应用程序中由Polygon使用。
答案 0 :(得分:2)
编辑:根据您的评论完全重写我的答案......
好的,所以你总是有一个Line
类,问题是把逻辑添加到多边形的位置。
您的Line
CTor假定有一个可选的前任Line
对象。如果你改变它,那么CTor采用一个可选的Point
,那么耦合就会减少。未来可能出现的其他类也可以使用起点,长度和角度构造线。因此,从这个角度来看,CTor方法看起来很好。
此外,多边形基本上是一堆连接线(和评论建议的弧线),因此计算线的终点的逻辑似乎真正属于Line
类。同样,Line
的其他用户也可能不必复制Polygon
的代码。
如前所述,还有第三种方式:
例如,您可以创建一个LineFactory
类,该类根据起点,长度和角度创建Line
对象。然后,该工厂函数将进行计算并设置该行的起点和终点设置终点。