Обработка событий мыши

Пожалуй, нет ни одной игры, где бы не было взаимодействия с игроком, т.е. интерактивности. В нашем случае, как у программиста, у вас есть две возможности обеспечить игроку взаимодействие с компьютером: это использование мыши и клавиатуры. В этой и следующей главе я расскажу вам, как обрабатывать события мыши и клавиатуры в апплете. И опять же, это намного легче реализовывается в апплете, нежели в реальном приложении, созданном, к примеру, с использованием Java Swing. Также вы вряд ли сможете использовать в приложениях вещи об обработке событий, которые вы здесь узнаете, потому что такие обработки сильно различаются в разных программах. Однако в любой хорошей книге по Java имеется раздел, посвященный обработке событий, так что проблем с изучением у вас быть не должно.
А сейчас давайте изменим апплет с двигающимся шаром так, чтобы шар менял направление, когда юзер кликает по апплету.
Чтобы сделать это, следует реализовать только один метод в нашем классе Main с названием mouseDown. Этот метод будет выглядеть так:

// Метод обработки событий мыши
public boolean mouseDown (Event e, int x, int y)
{

    // Изменяем направление
    x_speed = - (x_speed);

    // НЕ ЗАБЫВАТЬ (хотя здесь не обязательно)!!
    return true;
}

Конечно, вы можете обрабатывать и бругие события, не только mouseDown. Java делает возможным переписать следующие методы таким же путем, как я сделал выше и обрабатывать другие события мыши. Ниже приведен список методов:

1. События щелчка мыши:
а. public boolean mouseDown (Event e, int x, int y): обрабатывает события, происходящие, когда кнопка мыши нажата
б. public boolean mouseUp (Event e, int x, int y): обрабатывает события, происходящие, когда кнопка мыши отпущена
Используйте переменную e.clickCount чтобы получить число кликов. Таким образом вы сможете отслеживать, к примеру, двойные клики! Вы увидите пример применения этого пункта в главе 5 ("Наша первая игра").

2. Движения мыши:
а. public boolean mouseMove (Event e, int x, int y): обрабатывает события, когда курсор мыши проходит над апплетом
б. public boolean mouseDrag (Event e, int x, int y): обрабатывает события, когда курсор мыши проходит над апплетом с нажатой левой кнопкой

3. Позиция мыши:
а. public boolean mouseEnter(Event e, int x, int y): обрабатывает события, когда курсор мыши входит в поле апплета
б. public boolean mouseExit (Event e, int x, int y): обрабатывает события, когда курсор мыши входит покидает поле апплета

С помощью переменных int x и int y вы можете получить значения координат, где произошло событие, что очень важно для многих игр. Также вы следует заботиться, чтобы возвращеть выражение "return true;", что часто не влияет на функциональность ваших игр, но is expected by the method.

Скачать исходный код апплета
Запустить апплет

Следующая глава:
Обработка событий клавиатуры

Fabian Birzele, 2001-2003.
перевод и веб-дизайн: В.Мурзагалин, 2004.