WedX - журнал о программировании и компьютерных науках

Программа не распознает щелчки мышью

Я кодирую свою самую первую игру, но у меня проблемы с работой экрана меню. Ниже приведен код моего меню. Я пытался проверить кнопку выхода, но программа не закрывается независимо от того, где я нажимаю. Я также безуспешно пытался добавить System.out.println(e.getX()+", "+e.getY()); к моему методу mousePressed(); ничего не распечатает. Я полностью потерян и могу использовать любую помощь. Извините, если это глупый вопрос, я совершенно новичок в этом! Спасибо!

public class MenuScreen implements Screen {
    MyGame game;
    OrthographicCamera camera;
    SpriteBatch batch;

    public MenuScreen(MyGame game) {
        this.game = game;

        camera = new OrthographicCamera();
        camera.setToOrtho(false, 1080, 1920);

        batch = new SpriteBatch();
    }

    public class MouseInput implements MouseListener {

        @Override
        public void mouseClicked(MouseEvent arg0) {}

        @Override
        public void mouseEntered(MouseEvent arg0) {}

        @Override
        public void mouseExited(MouseEvent arg0) {}

        @Override
        public void mousePressed(MouseEvent e) {

            int mx = e.getX();
            int my = e.getY();

            /**
                batch.draw(Assets.sprite_startbutton, 165, 955);
                batch.draw(Assets.sprite_tutorialbutton, 325, 790);
                batch.draw(Assets.sprite_exitbutton, 365, 700);
                batch.end();
             */
            //exit button
            if (mx >= 365 && mx <= 600) {
                if (my >= 700 && my <= 775) {
                    //Pressed exit button
                    System.exit(1);
                }
            }
        }

        @Override
        public void mouseReleased(MouseEvent arg0) {}
    }

    public void render(float delta) {
        Gdx.gl.glClearColor(1F, 1F, 1F, 1F);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        camera.update();

        batch.setProjectionMatrix(camera.combined);

        batch.begin();
            batch.draw(Assets.texture_background, 0, 0);
            batch.draw(Assets.sprite_cat, 500, 1350, 750, 263); 
            //(500, 1350, 750, 263)[Cat on shelf]
            //(95, 1600, 900, 316)[Cat starting position]
            batch.draw(Assets.sprite_title, 50, 1600);
            batch.draw(Assets.sprite_startbutton, 165, 955);
            batch.draw(Assets.sprite_tutorialbutton, 325, 790);
            batch.draw(Assets.sprite_exitbutton, 365, 700);
        batch.end();
    }

  • Вы добавили MouseListener в свой компонент? 26.07.2014
  • Похоже, он использует libgdx (у AWT нет интерфейса Screen) 26.07.2014
  • Извините, я вроде новенький. Что ты имеешь в виду? У меня есть import java.awt.event.MouseListener; если ты это имеешь в виду. 26.07.2014
  • Если вы посмотрите на ссылку моего вопроса, она подробно объяснена, но простая версия заключается в том, что вы в настоящее время смешиваете две разные библиотеки. AWT — это библиотека, в которой есть MouseListener, она предназначена для приложений с графическим интерфейсом и такими вещами, как JFrame, JPanel и т. Д., Это не лучший вариант для создания игр сам по себе. LibGDX — это отдельная библиотека, ориентированная на создание игр с собственным способом работы с мышью. Прямо сейчас вы используете MouseListener AWT, который предназначен для использования с другими компонентами AWT, с классом Screen LibGDX, который не является одним из этих компонентов. Вы можете следовать этому руководству со страницы 1 26.07.2014
  • и это объяснит, что вам нужно сделать, чтобы начать работу с LibGDX 26.07.2014

Ответы:


1

Похоже, вы используете MouseListener, предназначенный для AWT, в приложении libgdx, которое не будет работать в вашей настройке. Используйте Gdx.input для опроса ввода (или InputListener).

Вы также можете посмотреть это руководство: https://www.gamefromscratch.com/post/2013/10/15/LibGDX-Tutorial-4-Handling-the-mouse-and-keyboard.aspx

26.07.2014
Новые материалы

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


Для любых предложений по сайту: [email protected]