У меня есть некоторые проблемы с событиями mousePressed
и mouseDragged
. Я пытаюсь создать игру Space Shooter, и я хочу, чтобы игрок мог снимать, нажимая и двигаясь по мыши. Большая проблема, по-моему, у меня есть с событием mouseDragged
. Чтобы быть более конкретным: когда я нажимаю кнопку мыши, вызывается mousePressed
, и он работает отлично, а затем, когда я перемещаю мышь вокруг (все еще удерживая нажатой клавишу мыши), mouseDragged
входит и отлично работает, но когда я перестаю перемещать мышь (заметьте, что я все еще нажимаю) мой космический корабль перестает стрелять, и я не знаю, почему.Java Game - Мышь нажата и мышь перетащили
Это код:
private void initShootingThread(final MouseEvent e) {
new Thread() {
public void run() {
do {
playerShoot(e);
} while (buttonPressed);
}
}.start();
}
// // PLAYER SHOOTING EVENTS ////
public void mouseClicked(MouseEvent e) {
playerShoot(e);
}
public void mousePressed(MouseEvent e) {
buttonPressed = true;
initShootingThread(e);
}
public void mouseDragged(MouseEvent e) {
buttonPressed = false;
playerShoot(e);
}
public void mouseReleased(MouseEvent e) {
buttonPressed = false;
}
Спасибо заранее!
Проблема заключается в том, если я не ставлю buttonPressed = ложь в mouseDragged, пули будут идти в том же месте, независимо от того, тот факт, что я покидаю Космический корабль. [Ссылка] (http://s1318.photobucket.com/user/Andy19505/media/Game_zps72b9ee10.jpg.html). Это то, что я имею в виду. – Andy
Так что исправьте проблему. Ваш код playerShoot (e) должен быть неправильным. Возможно, вам нужны две версии. Один для mousePressed и один для mouseDragged(). У нас нет доступа к вашему коду, поэтому вам нужно будет выполнить некоторую базовую отладку самостоятельно. Мы указали вам в правильном направлении. – camickr
Хорошо, спасибо за ответ, я постараюсь придумать решение, и если мне удастся найти его в разумные сроки, я отправлю его. ;) – Andy