libgdx getChildren

时间:2014-12-14 21:48:00

标签: libgdx

        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");
            }
        });

这包含在我的render方法中调用的方法中。 它没有得到Clicked。我的控制台没有任何东西出现。我调试了应用程序,“items [1]”实际上是作为一个孩子。这是一个图像,当我运行应用程序时,图像会显示出来。

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

修改

handCard1是一个包含2个Image子组的组。

修改

我在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");
        }
    });

}
<{1>}中的

并且它无效。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

你确定你在做什么

Gdx.input.setInputProcessor(battleStage);

battleStage.act(delta);

答案 2 :(得分:0)

&#34;这包含在我的渲染方法中调用的方法中。&#34;

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