【问题标题】:Libgdx Listener enter and exit fires multiple timesLibgdx 侦听器进入和退出多次触发
【发布时间】:2016-07-20 01:36:14
【问题描述】:

我目前正在尝试实现一个 clickListener。 我找到了一个很棒的运行时工具,它叫做 Overlap2D,在那里我做了一些不错的按钮并加载了它们,一切都很好。 因为我想为我的按钮制作一个“悬停”效果,所以我使用 ClickListener 和方法进入和退出,它看起来是这样的:

      @Override
       public void enter(InputEvent event, float x, float y, int pointer, Actor fromActor){

               playButton.setLayerVisibility("MouseOver", true);
               playButton.setLayerVisibility("pressed", false);
               playButton.setLayerVisibility("normal", false);     

               System.out.println("Actor enter : "+fromActor);

       }

       @Override
       public void exit(InputEvent event, float x, float y, int pointer, Actor toActor){


               playButton.setLayerVisibility("MouseOver", false);
               playButton.setLayerVisibility("pressed", false);
               playButton.setLayerVisibility("normal", true);

               System.out.println("Actor exit : "+toActor);

       }
       @Override
       public boolean touchDown (InputEvent event, float x, float y, int pointer, int button){

               System.out.println("touchdown");

               return true;
       }
        @Override
       public void touchUp (InputEvent event, float x, float y, int pointer, int button){

               System.out.println("touchup");

       }

这里的问题是,当我按下按钮或向上时,一次调用 touchdown 和 touchup。但是在 touchdown 和 touchupo 事件 O.o 期间也会调用 enter 和 exit 方法,如下所示:

touchdown
Actor enter : null
Actor exit : Image
Actor enter : Image
touchup
Actor exit : Image
Actor exit : Image
Actor enter : Image
Actor exit : Image
Actor enter : Image

我打印了 fromActor 和 toActor 也用于调试^^ 而且我仍然不知道为什么它会触发退出和进入事件这么多...... 有人有想法吗?

谢谢:)

【问题讨论】:

    标签: java button libgdx clicklistener overlap2d


    【解决方案1】:

    您需要检查传递给enterexit 方法的pointer。如果pointer-1,那么鼠标光标刚刚开始或停止悬停在actor 的边界上。如果pointer 不是-1,则演员刚刚收到点击或点击释放(分别为enterexit)。

    因此,如果您将光标移到按钮上并单击然后移开,您将获得两个 enter 事件和两个 exit 事件。

    • 悬停 -> 用指针 -1 输入
    • 向下点击 -> 用指针 0 输入
    • 释放点击 -> 以指针 0 退出
    • 移开光标 -> 退出 带指针-1

    另外,在使用 ClickListener 时,请确保在覆盖方法时调用超级方法,这样它才能正常运行!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-10
      • 1970-01-01
      • 2016-07-17
      • 1970-01-01
      • 2015-12-27
      相关资源
      最近更新 更多