Кликабельные изображения в Java - PullRequest
1 голос
/ 30 декабря 2011

Я делаю игру типа "укажи и щелкни". Мне интересно, есть ли простой способ сделать кликабельные изображения? Я собираюсь использовать фотографии в качестве фона, а также в качестве предметов, которые игрок должен собирать. Итак, есть ли простой способ сделать предметы кликабельными, а также исчезнуть после нажатия (игрок забирает их).

Спасибо за ответы, и если мое объяснение было сложным, пожалуйста, скажите, и я постараюсь это исправить.

Ответы [ 6 ]

4 голосов
/ 30 декабря 2011

Для создания игры я бы рекомендовал перенести всю логику на один уровень ниже.

  1. Создайте структуру данных, которая будет содержать состояние вашего уровня игры. Эта структура данных будет загружена из некоторого файла конфигурации уровня XML, и я думаю, что он должен содержать:
    • A Изображение объект, содержащий фоновый уровень (фото).
    • Массив всех предметов. Каждый элемент должен иметь Изображение , размеры на экране уровня (X, Y, Ширина, Высота) и какое-либо состояние (видимое, выделенное и т. Д.).
  2. Создайте класс, который расширяет Холст . Это будет компонент, который будет содержать и отображать весь экран игры (с элементами и фоновой фотографией).
  3. Переопределить это метод рисования . В этом методе рисования используйте метод drawImage , чтобы пройти через объект данных уровня (указанный в шаге 1) и нарисовать фон (комнату) и все элементы в их соответствующих координатах. Если предмет имеет visible = false - не рисуйте его. Если он имеет selected = true - нарисуйте вокруг него какое-нибудь выделение или что хотите.
  4. Реализация MouseListener . Этот слушатель должен проверить, находятся ли координаты щелчка внутри размеров одного из ваших «объектов» на экране (проходить по всем активируемым объектам). Если это так - выполните соответствующее действие (например, увеличьте счет и установите visible = false для этого элемента) и обновите ваш холст с помощью repaint . Это вызовет метод paint, снова рисуя все изменения на вашем холсте.
  5. Зарегистрируйте MouseListener на вашем Canvas с помощью addMouseListener , чтобы связать все это вместе.
1 голос
/ 30 декабря 2011

Есть несколько способов, самым простым из которых является использование JButton и установка значка на нем.Но вы также можете добавить MouseListener для любого компонента (например, JPanel) и установить изображение в качестве фона (переопределить краску).

1 голос
/ 30 декабря 2011

Если вы используете Swing, просто установите значок JButton. Это создаст «кликабельное изображение».

0 голосов
/ 30 декабря 2011

Простой пример того, как вы можете получить кликабельное изображение. Дополнительные примеры и объяснения по Java Swing и AWT вы можете посмотреть в официальных руководствах по Java здесь .

//a lable holding an image
JLabel label = new JLabel(new ImageIcon("MyImage));
//Add a mouse listener to get the click event
//
label.addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e) {
        System.out.println("Mouse clicked (# of clicks: "
                + e.getClickCount() + ")", e);
    }
});
0 голосов
/ 30 декабря 2011

Вы можете установить изображение для объекта JButton в качестве фона.Ключевым моментом является то, что вы должны слушать событие щелчка мыши, и JButton является первым выбором, чтобы удовлетворить это требование.

0 голосов
/ 30 декабря 2011

Вероятно, вы собираетесь сделать что-то вроде этого: нарисуйте JPanel, а затем разместите на нем связку JLabels, и каждый ярлык также нарисует свое собственное изображение.

Если у вас есть конкретный вопрос о коде, мы можем вам помочь, но вы очень общий.Попробуйте поработать с примерами Swing на веб-сайте java, а затем задайте более конкретные вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...