Java 重置Android中不工作的路径
我目前正在开发一个游戏,在这个游戏中,计算机根据旅行商问题算法沿着数组列表中的点绘制一条路径。在每次迭代中,我需要重置上一个路径。目前,迭代生成的每个新路径都在前一条路径的基础上绘制,因此看起来非常混乱。根据android文档,函数path.reset似乎无法正常工作。这是我的代码,有人能指出我哪里出错了吗Java 重置Android中不工作的路径,java,android,traveling-salesman,Java,Android,Traveling Salesman,我目前正在开发一个游戏,在这个游戏中,计算机根据旅行商问题算法沿着数组列表中的点绘制一条路径。在每次迭代中,我需要重置上一个路径。目前,迭代生成的每个新路径都在前一条路径的基础上绘制,因此看起来非常混乱。根据android文档,函数path.reset似乎无法正常工作。这是我的代码,有人能指出我哪里出错了吗 //this class draws a line public void CompDrawLine(List test) { // int d = 0; int i=0
//this class draws a line
public void CompDrawLine(List test) {
// int d = 0;
int i=0;
test.add(test.get(0));
Point c = test.get(i);
for (i=0;i<(test.size()-1);i++) {
cPath.moveTo(c.x,c.y);
c = test.get(i+1);
cPath.lineTo(c.x,c.y);
mCanvas.drawPath(cPath,cPaint);
cPath.reset();
}
// cPath.reset();
invalidate();
}
在循环中调用moveTo时,其效果与调用reset相同。moveTo设置下一个轮廓的开始,但实际上您只需要绘制一个轮廓。我更改了您的代码,您可以看到差异:
int i=0;
test.add(test.get(0));
Point c = test.get(i);
path.moveTo(c.x,c.y); // move this line out of the loop
for (i=0;i<(test.size()-1);i++) {
c = test.get(i+1);
path.lineTo(c.x,c.y);
canvas.drawPath(path,paint);
// path.reset(); // comment out reset()
}
@我想我明白你的意思了。你说重置功能不能工作,但实际上它可以。你没有正确使用它。我只是想解释一下重置是如何工作的。我猜你想用线连接所有的点。如果是这样,您应该使用drawLine,而不是drawPath。
int i=0;
test.add(test.get(0));
Point c = test.get(i);
path.moveTo(c.x,c.y);
for (i=0;i<(test.size()-1);i++) {
c = test.get(i+1);
path.lineTo(c.x,c.y);
canvas.drawPath(path,paint);
path.reset(); // uncomment reset()
}