有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

修补后的java退出事件

我在LibGDX中有以下问题。当您移动到Actor上时,您将从ClickListener获得enter事件,当您移出Actor的边界框时,将获得exit事件。我保留一个布尔鼠标盖,告诉我光标是否位于带有这些事件的Actor上。但是,当您单击Actor并释放鼠标后,会出现一个退出事件。因此,在释放鼠标点击后,就好像光标不再位于演员上方,而它是

如何保持布尔鼠标盖的正确状态?换言之:在上述场景中发生了润色事件时,我如何知道鼠标是否在我的演员上方


共 (3) 个答案

  1. # 1 楼答案

    到目前为止,我发现最好的方法是查看出口中的指针arg并输入覆盖,然后查看是否单击鼠标。不过,我仍在寻找更清洁的解决方案

        addListener(new ClickListener() {
            @Override
            public void enter(InputEvent event, float x, float y, int pointer,
                    Actor fromActor) {
                mouseOver = pointer == -1 ? true : mouseOver;
                super.enter(event, x, y, pointer, fromActor);
            }
    
            @Override
            public void exit(InputEvent event, float x, float y, int pointer,
                    Actor toActor) {
                mouseOver = pointer == -1 ? false : mouseOver;
                super.exit(event, x, y, pointer, toActor);
            }
    }
    
  2. # 2 楼答案

    仅当退出的参与者不是您添加侦听器的参与者时,才将鼠标悬停设置为false:

    myActor.addListener(new ClickListener() {
      ...
      @Override
      public void exit(InputEvent event, float x, float y, int pointer, Actor toActor) {
        ...
        if (toActor != myActor) // and even myActor's children if it is a Group
          mouseOver = false;
      }
    });
    
  3. # 3 楼答案

    您可以覆盖触摸,并将布尔值鼠标悬停设置为true

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