2011-09-28 96 views
1

好的我玩w/ontouch事件擴大視圖。Android的OnTouch事件衆多的對象

我所做的事就是觸摸一個圓圈......圓圈會隨着你的移動而移動。當你移動另一個圓圈時,它將坐在減少半徑的位置直到它消失。(現在直到10個圓圈)。我也可以處理多個手指在一個時間點接觸。這是問題..代碼是很難的!

要創建多個圈這是我的paint方法:

public void onDraw(Canvas canvas) 
    { 
     paint.setColor(Color.RED);     
     paint.setStyle(Style.STROKE); 
     paint.setStrokeWidth(stroke); 
     canvas.drawCircle(x,y,radius,paint); 
     canvas.drawCircle(x1,y1,radius1,paint); 
     canvas.drawCircle(x2,y2,radius2,paint); 
     canvas.drawCircle(x3,y3,radius3,paint); 
     canvas.drawCircle(x4,y4,radius4,paint); 
     canvas.drawCircle(x5,y5,radius5,paint); 
     canvas.drawCircle(x6,y6,radius6,paint); 

     paint.setColor(Color.BLUE); 
     canvas.drawCircle(x7,y7,radius7,paint); 
     canvas.drawCircle(x8,y8,radius8,paint); 

     paint.setColor(Color.YELLOW); 
     canvas.drawCircle(x9,y9,radius9,paint); 
     canvas.drawCircle(x10,y10,radius10,paint); 
    } 

所以你可以遠遠低效看到這一點,使一些長期討厭的代碼..部分的問題是事實,我一定只能夠在Ontouch中改變座標並且無效。任何人都知道一種方式,我可以更有效地做到這一點(在更多的面向對象類型的方法)。第一

+0

ü應存儲的x,y在一個ArrayList和點迭代通過ArrayList對象繪製點 – ingsaurabh

回答

2

第一件事,開始與此:

public class Circle { 
    public int x; 
    public int y; 
    public double radius; 
    public Paint paint; 

    /* constructors, getters & setters if you feel like ...*/ 

} 

,並把所有你的圈子中

ArrayList<Circle> circles = new ArrayList(); 


public void onDraw(Canvas canvas) 
{ 
    /*...*/ 
    Iterator iterator = circles.iterator(); 
    while(iterator.hasNext()) { 
     drawCircle(iterator.next()); 
    } 
} 

public void drawCircle(Canvas canvas, Circle circle) { 
    canvas.drawCircle(circle.x, circle.y, circle.raidus, circle.paint); 
} 
+0

其實我認爲這將工作..當我這樣做,並創建10左右..我開始想建立一個粒子系統(雖然不確定性能使用視圖/塗料與OpenGL)。所以我試圖找到一個有效的方法來創建1000+左右的對象(粒子)。我想我會給這個鏡頭,看看會發生什麼,現在只是與cirlces。謝謝.. – DJPlayer