2016-05-07 4 views
0

私は最初からゲームUIを作成しています.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()); 
     }})); 

正しい方向に私を向けることができる限り、私はこれを完全に間違った方法にしています。すべての助けをいただければ幸いです!

答えて

0

そのコンストラクタにインタフェースをとるクラスを作成することですそれを行うための方法。次に、クラスをインスタンス化するときに、インスタンスのClickListenerを渡すときと同じように、インターフェイスの実装を匿名クラスとして渡します。例えば、インタフェースは、あなたがTickerObjectのインスタンスを作成する場合、次のように続いて、それは次のようになりその後ベースクラスが

public class TickObject() { 
    private Ticker ticker; 

    public TickObject(Ticker ticker) { 
     this.ticker = ticker; 
    } 

    public void doTick() { 
     ticker.doTick(); 
    } 
} 

のようなものかもしれ

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

のようなもの

であってもよいです

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

はありがとうございました!これは私がやりたいこととまったく同じように見えます! – Flash

+0

関連する質問は、この作品を作ることが可能かどうか知っていますか? UITextRectangle FPS =新しいUITextRectangle(ハンドラ、handler.getWidth() - 64、32、32、32、Color.DARK_GRAY、Color.grayの、新たなティッカー(){ \t \t \t @Override \t \t \t公共ボイドdoTick (){ \t \t \t \t fps.setText(持つInteger.toString(handler.getFPS())); \t \t \t} \t \t})。 書式設定についてお詫び申し上げます – Flash

関連する問題