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

时间:2016-05-07 01:19:22

标签: java user-interface game-engine

我从头开始制作游戏用户界面,而不是为许多类似对象创建一个类,例如FPS和得分计数器。 我是否可以创建一个允许我以类似于覆盖按钮上的onClick()方法的方式覆盖基本tick方法的类?

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

随时告诉我,只要你能指出我正确的方向,我就会完全走错路。任何和所有的帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

这样做的一种方法是创建一个在其构造函数中使用接口的类。然后,当您实例化该类时,您将传递接口的实现作为匿名类,就像您在示例中传入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
    }
});