Как я могу инициализировать 2 потока в одном? - PullRequest
0 голосов
/ 28 апреля 2020

У меня возникла небольшая проблема при разработке игры. Я пытаюсь создать «колебание» для моей сущности: она движется вперед на 0,5 с, затем назад на 0,25 с, затем вперед на 0,5 с. , , пока он не пройдет другую сторону экрана.

Мои сущности "двигаются" благодаря моей функции обновления (double dt).

@Override
public void update(double dt)
{
    super.update(dt);

    if(direction == 0)
        x -= dt * vx;
    else x += dt * vx;

    this.imgView.setX(x);
    this.imgView.setY(y);
}

Я попытался создать еще 2 темы в своей функции обновления, но пока я ждал, она не работает:

@Override
public void update(double dt)
{
    super.update(dt);

    Timer t = new Timer();
    Timer t2 = new Timer();
    synchronized (t2)
    {
        t.schedule(new TimerTask() {
            @Override
            public void run() {
                if(direction == 0)
                    x -= dt * vx;
                else x += dt * vx;
                try {
                    Thread.sleep(250);
                } catch (InterruptedException e) {
                    System.out.println("InterruptedException Exception" + e.getMessage());
                }
            }
        }, 0, 500);
    }

    synchronized (t)
    {
        t2.schedule(new TimerTask() {
            @Override
            public void run() {
                if(direction == 0)
                    x += dt * vx;
                else x -= dt * vx;
                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    System.out.println("InterruptedException Exception" + e.getMessage());
                }
            }
        }, 0, 250);
    }

    this.imgView.setX(x);
    this.imgView.setY(y);
}

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

Заранее извините за мой Engli sh, я не очень хорошо говорю ... Заранее спасибо за ваша помощь!

...