【问题标题】:libgdx getChildrenlibgdx getChildren
【发布时间】:2014-12-14 21:47:59
【问题描述】:
        battleStage.addActor(aPlayer.handCard1);
        aPlayer.handCard1.setPosition(300, -256);
        aPlayer.handCard1.addAction(Actions.sequence(Actions.delay(0),
                Actions.moveTo(300, 50, 1)));
        aPlayer.handCard1.getChildren().items[1].addListener(new ClickListener() {
            @Override
            public void clicked(InputEvent event, float x, float y) {
                aPlayer.handCard1.getChildren().items[1].addAction(Actions.hide());
                System.out.println("duh");
            }
        });

这包含在我的渲染方法中调用的方法中。 它没有被点击。我的控制台中什么也没有出现。我调试了应用程序,并且“items [1]”实际上作为一个孩子就在那里。这是一个图像,当我运行应用程序时,图像会显示出来。

有人可以帮忙吗?提前致谢!

编辑

handCard1 是一个具有 2 个子图像的组。

编辑

我正在做battleStage.addActor(aPlayer.handCard1);show()aPlayer.handCard1.setPosition(300, 50); aPlayer.handCard1.addListener(new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { aPlayer.handCard1.getChildren().items[1].addAction(Actions.hide()); System.out.println("duh"); } });render() 中,它正在工作。

那我在做

    aPlayer.handCard1.setPosition(300, 50);
    aPlayer.handCard1.getChildren().items[1].setHeight(256);
    aPlayer.handCard1.getChildren().items[1].setWidth(192);
    aPlayer.handCard1.getChildren().items[1].addListener(new ClickListener() {
    @Override
        public void clicked(InputEvent event, float x, float y) {
            aPlayer.handCard1.getChildren().items[1].addAction(Actions.hide());
            System.out.println("duh");
        }
    });

}

render() 中,它不起作用。

【问题讨论】:

  • 你在battleStage.act()render()做吗?
  • 如果没有设置宽高,clickListener 可能不会被触发。
  • 是的。 battleStage.act()render 中被调用。我正在做 aPlayer.Card1.getChildren().items[1].setHeight(256); aPlayer.Card1.getChildren().items[1].setWidth(192); 仍然没有任何反应

标签: libgdx


【解决方案1】:

“这包含在我的渲染方法中调用的方法中。”

您应该在 show() 方法而不是 render() 方法中将您的演员添加到舞台。

【讨论】:

  • 对!!当我在 show 方法中调用 handCard1.addActor(myActor); 以及为 stage.addActor(myGroup); 调用时,它起作用了!
【解决方案2】:

您需要使用演员的 setBounds() 方法设置点击事件的边界才能工作。请检查 this link

【讨论】:

  • 请注意,它不是按钮,而是图像。不过谢谢。每个可能的解决方案的想法都对我有帮助
  • 我设置了边界,但它不起作用。我发现battleStage.addActor(aPlayer.handCard1); 应该在 show 方法中,而其余代码在 render 方法中。
【解决方案3】:

你确定你在做吗

Gdx.input.setInputProcessor(battleStage);

battleStage.act(delta);

【讨论】:

  • 是的,我在 show()render() 中使用 Gdx.input.setInputProcessor(battleStage);battleStage.act()。我只是为了它而添加了 delta,没有任何反应。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-03
  • 2014-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多