这是一种知道演员何时被撤下舞台的方法吗?(事件?)我需要知道它是什么时候被删除的,而不是打算被删除的
您可以覆盖setStage(Stage stage)
,当stage
变为null
时,您可以采取行动…
看这个:
@Override
protected void setStage(Stage stage) {
super.setStage(stage);
if (stage != null) {
// Actor added to stage
} else {
// Actor removed from stage
}
}
这可能是一个概念上的错误方式,因为Scene2d的设计不管理这类事件。但有时确实有必要有这样一个钩子。也许@noone描述的解决方案更好,但这是一个更干净的方法。
没有那样的事。你通常会自己移除actor,所以你可以在那里触发一个自定义事件。
也不可能创建一种新的Stage
来触发这样的事件,因为Stage
实际上并不直接知道参与者。Stage
有一个"根"Group
,它有子节点。这些子元素也可以有子元素,当调用Actor.remove()
时,actor实际上只是将自己从父元素的子元素列表中移除。这将是触发此类事件的好地方,但是父Group
甚至可能没有附加到Stage
。此外,创建一个新的Actor
或Group
类来触发这样的事件,如果你使用的是"原生"scene2d,就行不通了。Ui,因为它们已经扩展了本地libgdx类。您唯一的选择是更改libgdx实现以添加此默认行为。
当你做Actor.remove()
时,可能更容易自己调用事件侦听器方法。