Java - вращение значений ArrayList для игры - PullRequest
0 голосов
/ 21 января 2019

У меня есть три глобальные переменные:

private PhysicsActor blade;
private PhysicsActor blades;
private ArrayList<PhysicsActors> blades;

Я создал объект актера из класса, созданного для своей игры.

blade = new PhysicsActor();
        blade.storeAnimation( "", exTex );
        blade.setOriginCenter();
        blade.setEllipseBoundary();
        blade.setMaxSpeed(50);
        blade.setDeceleration(50);

    bladesList = new ArrayList<PhysicsActor>();
        for (int i = 0; i < 3 ; i++)
        {
            float xCoord = randomFloatGenerator(425, 50);
            float yCoord = randomFloatGenerator(mapHeight - 200, 275);
            blades = blade.clone();
            blades.setPosition(xCoord, yCoord);
            mainStage.addActor(blades);
            bladesList.add(blades);
        }

Проблема не в том, что они не появляются,Дело в том, что когда я призываю их вращаться, когда моя игра работает в моем методе обновления (float dt), вращается только один из них:

public void update(float dt) 
{   
    // rotate the blade 70 degrees
    blades.rotateBy(70); 

    // rest of code etc
}

Вот изображение, которое помогает визуализировать

Я знаю, что это происходит, потому что я вращаю только лезвия актер.То, что я хочу сделать, это чтобы все они вращались из ArrayListЯ не знаю, как получить их из списка, однако.Я пробовал bladesList.get (i), используя цикл for и пару других способов, которые я видел в Интернете, но это не сработало.Любые советы или инструкции для меня?

Кроме того, я опубликую больше кода, чтобы прояснить что-то запутанное, если потребуется.

1 Ответ

0 голосов
/ 21 января 2019

Вы можете попробовать это

for (PhysicsActor blade : bladesList) {
    blade.rotateBy(70);
}

, это заставит все блейды в вашем списке вращаться на 70. Учитывая, что вы можете получить доступ к массиву, откуда вы его вызываете.

...