2013-11-14 49 views
0

我是新來的stackoverflow,我希望你能回答我的問題。 我有以下移動代碼。我想要一個條件乘以

public MovementView(Context context) { 
    super(context); 
    getHolder().addCallback(this); 
    circleRadius = circleRadius2 = 50; 
    circlePaint = new Paint(); 
    circlePaint2 = new Paint(); 
    circlePaint.setColor(Color.GREEN); 
    circlePaint2.setColor(Color.RED);   
    xVel = 10; 
    yVel = 10; 
    xVel2 = 20; 
    yVel2 = 20; 
} 

@Override 
protected void onDraw(Canvas canvas) { 
    canvas.drawColor(Color.WHITE); 
    canvas.drawCircle(xPos, yPos, circleRadius, circlePaint); 
    canvas.drawCircle(xPos2, yPos2, circleRadius2, circlePaint2); 
} 
public void updatePhysics() { 
    xPos += xVel; 
    yPos += yVel; 
    if (yPos - circleRadius < 0 || yPos + circleRadius > height) { 
     if (yPos - circleRadius < 0) { 
      yPos = circleRadius; 
     }else{ 
      yPos = height - circleRadius; 
     } 
     yVel *= -1; 
    } 
    if (xPos - circleRadius < 0 || xPos + circleRadius > width) { 
     if (xPos - circleRadius < 0) { 
      xPos = circleRadius; 
     } else { 
      xPos = width - circleRadius; 
     } 
     xVel *= -1; 
    }   
    xPos2 += xVel2; 
    yPos2 += yVel2; 
    if (yPos2 - circleRadius2 < 0 || yPos2 + circleRadius2 > height) { 
     if (yPos2 - circleRadius2 < 0) { 
      yPos2 = circleRadius2; 
     }else{ 
      yPos2 = height - circleRadius2; 
     } 
     yVel2 *= -1; 
    } 
    if (xPos2 - circleRadius2 < 0 || xPos2 + circleRadius2> width) { 
     if (xPos2 - circleRadius2 < 0) { 
      xPos2 = circleRadius2; 
     } else { 
      xPos2 = width - circleRadius2; 
     } 
     xVel2 *= -1; 
    } 

} 

public void surfaceCreated(SurfaceHolder holder) { 
    Rect surfaceFrame = holder.getSurfaceFrame(); 
    width = surfaceFrame.width(); 
    height = surfaceFrame.height(); 
    xPos = xPos2 = width/2; 
    yPos = yPos2 = circleRadius; 
    updateThread = new UpdateThread(this); 
    updateThread.setRunning(true); 
    updateThread.start(); 
} 
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { 
} 
public void surfaceDestroyed(SurfaceHolder holder) { 
    boolean retry = true; 
    updateThread.setRunning(false); 
    while (retry) { 
     try { 
      updateThread.join(); 
      retry = false; 
     } catch (InterruptedException e) { 
     } 
    } 
} 

這定義了具有特定邊界的兩個圓的運動。現在我想添加更多的圈子,大約10到20.是否可以給一個變量而不是複製代碼(就像我爲兩個圓圈做的那樣)?

回答

0

有很多方法可以做到這一點。常用的方法是創建一個World對象並創建一個Circle類。

然後,世界可以創建任意數量的圓形物體。

要移動圓圈,您可以使用另一個控制對象,如「物理」,或者創建一個給每個圓圈的移動控制器。然後,世界將要求每個圈子移動,並可能將自己吸引到世界畫布上。