Я работаю над распределенной анимацией перемещения ШАРОВ с помощью RMI.
Моя цель состоит в том, чтобы перемещать несколько шариков таким образом, чтобы несколько клиентов наблюдали одно и то же движение / положение шариков, используя объект-шарик, который является удаленным объектом.
Мяч движется нормально, когда он только один, но когда я пытаюсь увеличить количество шаров, я терплю неудачу.
Вот некоторые фрагменты кода, где я применил циклы для работы с несколькими шарами:
на сервере:
b[0] = new BallImpl(0, 50, 2, 3 ,Color.YELLOW,20);
b[1] = new BallImpl(50, 50, 4, 3,Color.BLUE,10);
b[2] = new BallImpl(40, 40, 5, 5, Color.PINK,30);
b[3] = new BallImpl(60, 70, 4, 6, Color.GREEN,40);
for (int i = 0; i < currentNumBalls; i++) {
Naming.rebind ("rmi://localhost/BouncingBall", b[i]); // registers Ball object
System.out.println ("remote ball object registered.");
}
на сайте клиента:
вот как я смотрю на удаленные шары:
for (int i = 0; i < currentNumBalls; i++) {
try {
this.aBall[i] = (Ball) Naming.lookup("rmi://localhost/BouncingBall");
} catch (Exception e) {
System.out.println("Exception: " + e);
}
}
start();
код движущихся шаров:
public void moveballs() {
for (int i = 0; i < currentNumBalls; i++) {
try {
aBall[i].setBounds(pit.getWidth(), pit.getHeight());
aBall[i].move();
pit.repaint();
} catch (Exception e) {
e.printStackTrace();
}
}
}
и это код чертежа:
public void drawballs(Graphics g) {
for (int i = 0; i < currentNumBalls; i++) {
try {
g.setColor(aBall[i].getColor());
g.fillOval(aBall[i].getX(), aBall[i].getY(), aBall[i].getradius(), aBall[i].getradius());
} catch (RemoteException e) {
e.printStackTrace();
}
}
}
Может кто-нибудь подсказать мне, почему я вижу только один движущийся шарик, что насчет других шариков или есть какая-то проблема в этой конструкции, и я неправильно использую RMI? или порекомендуйте мне какой-нибудь дизайн, с помощью которого я смогу достичь своей цели.
спасибо большое,
jibby