как проверить, затронут ли фон, а не актер в libgdx?

#java #android #libgdx #actor

#java #Android #libgdx #актер

Вопрос:

у меня на экране снова и снова появляются случайные поля, когда поле касается, оно меняет положение. Я не уверен, как проверить, затронут ли экран, а не поле. где угодно, кроме окна.

     private Stage stage;
    private Texture boxImage;
    private Image pop;


@Override
public void show() {
    stage = new Stage();
    Gdx.input.setInputProcessor(stage);
    boxImage = new Texture(Gdx.files.internal("box.png"));
    pop = new Image(boxImage);


    pop.setPosition(20,20);

     pop.addListener(new ClickListener(){
         @Override
        public void clicked(InputEvent event, float x, float y)
         {
                int num1 = (int)MathUtils.random(50,500);
                int num2 = (int)MathUtils.random(50,500);
                pop.setPosition(num1,num2);

         }
     });

    stage.addActor(pop);

}
@Override
public void render(float delta) {
    Gdx.gl.glClearColor(0, 0 , 1, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    stage.act(delta);
    stage.draw();

}
  

Ответ №1:

Как насчет простого добавления ClickListener на вашу сцену?

     stage.addListener(new ClickListener(){
        @Override
        public void clicked(InputEvent event, float x, float y) {

            //check if box is hit
            if (pop.equals(stage.hit(x, y, false))) {
                //box hit
            } else {
                //box was not hit
            }

        }
    });
  

Комментарии:

1. пробовал это, но он также регистрирует попадание в поле, потому что оно находится на сцене. мне нужно все, кроме текущего поля

2. У меня это не сработало, всякий раз, когда я нажимаю на свой ImageButton, он по-прежнему регистрирует два щелчка от актера и фона. Может быть, это потому, что я использую ImageButton вместо Image?