我怎么知道在libgdx中删除一个actor?

时间:2014-08-21 06:53:47

标签: libgdx

他们是否知道演员何时被从舞台上移除? (事件?) 我需要知道什么时候删除它并不打算删除。

2 个答案:

答案 0 :(得分:2)

您可以覆盖setStage(Stage stage),当stagenull时,您可以采取行动......

看看这个:

@Override
protected void setStage(Stage stage) {
    super.setStage(stage);

    if (stage != null) {
        // Actor added to stage
    } else {
        // Actor removed from stage
    }
}

这可能是一种概念上的错误方式,因为Scene2d旨在不管理此类事件。但有时真的有必要有这样的钩子。也许@noone描述的解决方案更好,但这是一种更清洁的方式。

答案 1 :(得分:0)

没有那样的东西。您通常会自己删除演员,因此您可以在那里触发自定义事件。

也不可能创建一种新类型的Stage来触发这样的事件,因为Stage实际上并不直接了解演员。 Stage有一个" root"有孩子的Group。那些孩子也可以生孩子,在打电话给Actor.remove()时,演员实际上只是从父母的孩子名单中删除了自己。这将是触发此类事件的好地方,但父Group甚至可能不会附加到Stage。此外,创建一个新的ActorGroup类可以激活这样的事件,以防你使用" native" scene2d.ui,因为那些已经扩展了本机libgdx类。这里唯一的选择是更改libgdx实现以添加此默认行为。

只要您执行Actor.remove(),就可以更轻松地自己调用事件监听器方法。