2013-07-10 107 views
0

我想通過重新繪製座標,存儲在一個點數組中,然後重新創建它,在我的畫布周圍拖動路徑。路徑拖動但是水平和垂直翻轉,就像鏡像一樣,在用戶點擊的位置。我不知道爲什麼。拖動路徑

private void drag(MotionEvent e) { 
    // TODO correct weird flip 

    if (clicked(e)) { 
     for (Point p : points) { 
      int modX = (int) (e.getX() + (e.getX() - p.x)); 
      int modY = (int) (e.getY() + (e.getY() - p.y)); 
      p.set(modX, modY); 
     } 
     updateOutline(); 
    } 
} 

private void updateOutline() { 
    // update the outline 
    outline = new Path(); 
    outline.moveTo(points.get(0).x, points.get(0).y); 

    for (Point coor : points) 
     outline.lineTo(coor.x, coor.y); 
} 

任何幫助將不勝感激,謝謝

回答

1

在我看來,在這些線路的問題:(4

int modX = (int) (e.getX() + (e.getX() - p.x)); 
int modY = (int) (e.getY() + (e.getY() - p.y)); 

考慮兩點A(1,5)和B, 5)。如果用戶點擊C(3,6),則點A將被轉換爲A'(5,7)並且點B到B'(2,7)。正如你所看到的,A點和B點將改變地點。

您可能想要存儲開始拖動位置並使用此信息計算距離和更新的路徑位置。