Я создаю клон Minesweeper для удовольствия w/javafx, и если кто-то сыграл оригинальную игру, они могут вспомнить, что, когда вы нажимаете на плитку и передвигаетесь, другие плитки ведут себя так, как будто они также нажаты ... и если вы отпустите - узел, на который на данный момент находится ваша мышь, будет нажат, даже если вы первоначально нажали на совершенно другой узел. Мне трудно воссоздать это, и мне нужна помощь.javafx - события, блокирующие другие события от обработки?
Я использую класс обработчика глобальных событий, и я не уверен, что это хорошо или очень плохо ... однако, он чувствует себя хорошо, если события для моего клона обрабатываются отдельно. Я попытался использовать методы на узле, в котором произошло событие, например startFullDrag() или startDragAndDrop(), который, как я думаю, позволит другим событиям произойти или использоваться другими узлами? Я думал, вызывая эти методы на узле возникновения события, он разрешает обработку других событий или передачу информации на конечный узел, но ничего действительно не работает. До этого подхода я старался обрабатывать события вложенным образом, каждый подход заканчивается событием перетаскивания, которое не позволяет ничего случиться.
Есть ли у кого-нибудь идеи о том, как я могу реализовать эту функцию ... Я как бы на кирпичной стене. Если я не был о чем-то прояснен, спросите, я попробую и уточню. Также очень ценятся любые критические замечания по моему коду. Я всегда стараюсь улучшаться.
My clone (so far) and all of its classes on Gist.
Имея только один обработчик событий для всех узлов, это нормально. Я не понимаю, почему вы пытаетесь использовать события перетаскивания, в оригинальном тральщике нет поведения перетаскивания. Вместо того, чтобы запускать новые события на соседние узлы, постройте цикл, чтобы пересечь соседние узлы для проверки мин и номеров подсказок и сделать node.setOpened или setPressed и т. Д.Если это какая-то домашняя задача, постарайтесь сделать это сами. –
У меня нет проблем с поиском минов и всего этого джаза, я говорю о небольшом нюансе в каждой игре «Сапер», в которую я играл, когда вы оставили клик и держись за плитку, а затем двигайте мышью, удерживая щелчок левой кнопкой мыши по каждому узлу, на который вы переходите, будет нажат до тех пор, пока вы не отпустите, чтобы открыть потенциальную шахту или w/e. В Java с любой кнопкой (включая ToggleButton) этого не происходит, когда вы нажимаете & удерживаете и перетаскиваете другие плитки, не нажимайте. Поэтому я пытаюсь подражать этой старой тонкой вещи из игры. Вы знаете, о чем я говорю? – jpdemko