是否可以在其构造函数中覆盖对象的tick方法?



我正在从头开始制作游戏UI,而不是为许多类似的对象创建一个类,例如FPS和分数计数器。我是否可以创建一个类来覆盖它们的基本tick方法,就像覆盖按钮上的onClick()方法一样?

hudUIManager.addObject(new UIImageButton(handler, handler.getWidth()/2-128, handler.getHeight()/2-32, 64, 64, Assets.button_menu, new ClickListener(){
        @Override
        public void onClick() {
            State.setState(handler.getGame().getMenuState());
        }}));

只要你能给我指明正确的方向,你可以随意告诉我,我做这件事的方式完全错误。感谢您的帮助!

实现这一点的方法是创建一个在构造函数中使用接口的类。然后,当您实例化该类时,您将以匿名类的形式传入接口的实现,就像您在示例中传入ClickListener时所做的那样。

例如,接口可能类似

public interface Ticker() {
    public void doTick();
}

那么基类可能是类似的东西

public class TickObject() {
    private Ticker ticker;
    public TickObject(Ticker ticker) {
         this.ticker = ticker;
    }
    public void doTick() {
        ticker.doTick();
    }
}

然后,当你想创建一个TickerObject的实例时,它将如下

TickObject tickerObject = new TickObject(new Ticker(){
    @Overide
    public void doTick() {
        // implement
    }
});