2012-06-18 4 views
0

Я делаю простой 2-й стрелок, как космические захватчики, и я хочу перемещать своего «врага» только горизонтально, с одной стороны на другую с той же скоростью. Как я могу это сделать?Перемещение анимации в 2-й игре

Я уже сделал это для своего «героя» с KeyListener, но я не знаю, как это сделать автоматически.

Здесь есть код, который может помочь.

public SimpleEnemy(String linkimg, int x, int y, int life) { 
    super(linkimg, x, y); 
    this.life=life; 
    this.isMoving=false; 
} 

public void move() { 
    x += dx; 
    y += dy; 
} 

ответ

0

Что вам нужно - это игровой цикл. Например, цикл while, который никогда не заканчивается (бесконечный цикл) и который обновляет вашу позицию героя, если это необходимо.

while (true) { 
    // insert statement if move is needed here 
    move(); 
} 

Это довольно простой пример, но он должен прояснить ситуацию.

Поскольку я предполагаю, что вы используете java, вы можете взглянуть на некоторые игровые фреймворки, такие как jgame. Эти рамки используют аналогичный подход и делают его более удобным для работы.

Edit:

Обратите внимание, что процессоры работают очень быстро в эти дни, и эта бесконечная петля будет работать очень и очень часто в небольшом количестве времени (например, 1000+ раза в секунду). Таким образом, вам может потребоваться ограничить время выполнения этого цикла, или ваш герой будет за пределами экрана быстрее, чем вы можете смотреть.

Вы можете достичь этого сон или что-то подобное. Также эти рамки, о которых я упоминал, будут иметь это ограничение на борту.

+0

Если я понял, я добавил что-то, что может помочь, таймер на доске, как таймер = новый таймер (5, этот); \t \t \t \t timer.start(); Я прав? –

+0

таймер также выполнил бы эту работу в этой маленькой игре. Позаботьтесь о том, чтобы вы создали только один таймер и обновили все игровые объекты в этом таймере. – apparat

+0

Хорошо, я буду использовать бесконечный цикл. Но где я должен это выразить? В мой метод рисования? –

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