Я хотел бы, чтобы пользователь мог видеть меню описания, когда он наводит курсор на коллайдер (который представляет собой просто прозрачный прямоугольник) более 2 или 3 секунд. В настоящее время я использую расширения javaFX.
У меня есть программа, настроенная на то, что всякий раз, когда я нахожусь над коллайдером, она будет воспроизводить звуковой эффект, но я хотел бы, чтобы она давала краткое описание объекта, над которым они зависли, ЕСЛИ они навели указатель мыши на него не менее 2 раз. -3 секунды. Если это имеет смысл.
benCafCol.addEventHandler(MouseEvent.MOUSE_ENTERED, new EventHandler<MouseEvent>()
{
@Override
public void handle(MouseEvent e)
{
mediaPlayer.play();
benCafBox.setLayoutX(0);
benCafBox.setLayoutY(0);
benCafBox.setWidth(320);
benCafBox.setHeight(35);
}
});
benCafCol.addEventHandler(MouseEvent.MOUSE_EXITED, new EventHandler<MouseEvent>()
{
@Override
public void handle(MouseEvent e)
{
mediaPlayer.stop();
//default terms
benCafBox.setLayoutX(5);
benCafBox.setLayoutY(5);
benCafBox.setWidth(310);
benCafBox.setHeight(25);
}
});
Это компилируется и работает, я просто хотел бы, чтобы он делал то, о чем я упоминал ранее.




Используйте ПаузаПереход:
Animation delay = new PauseTransition(Duration.seconds(2));
delay.setOnFinished(e -> {
mediaPlayer.play();
benCafBox.setLayoutX(0);
benCafBox.setLayoutY(0);
benCafBox.setWidth(320);
benCafBox.setHeight(35);
});
benCafCol.addEventHandler(MouseEvent.MOUSE_ENTERED,
e -> delay.playFromStart());
benCafCol.addEventHandler(MouseEvent.MOUSE_EXITED, e -> {
delay.stop();
mediaPlayer.stop();
//default terms
benCafBox.setLayoutX(5);
benCafBox.setLayoutY(5);
benCafBox.setWidth(310);
benCafBox.setHeight(25);
});
Обратите внимание, что Duration — это javafx.util. Продолжительность, а не java.time.Duration.
@KellenMiller Если вы считаете, что это отвечает на ваш вопрос, рассмотрите принимаю ответ.
Animation delay = new PauseTransition(Duration.seconds(2));
delay.setOnFinished(e -> {
mediaPlayer.play();
benCafBox.setLayoutX(0);
benCafBox.setLayoutY(0);
benCafBox.setWidth(320);
benCafBox.setHeight(35);
});
benCafCol.addEventHandler(MouseEvent.MOUSE_ENTERED,
e -> delay.playFromStart());
benCafCol.addEventHandler(MouseEvent.MOUSE_EXITED, e -> {
delay.stop();
mediaPlayer.stop();
//default terms
benCafBox.setLayoutX(5);
benCafBox.setLayoutY(5);
benCafBox.setWidth(310);
benCafBox.setHeight(25);
});
это работает!
Большое спасибо! это именно то, что я ищу!