2013-11-14 4 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.

Затем мир может создать столько объектов круга, сколько пожелаете.

Чтобы переместить круги, вы можете либо иметь другой объект управления, например, «Физика», либо создать контроллер движения, который передается каждому кругу. Затем мир попросит каждый круг двигаться и, возможно, притянуть себя к миру.

Смежные вопросы