3

QuadBatch名前が示すように、1 回の openGL 呼び出しで描画されるクワッドをバッチ処理するカスタムメソッドがあります。

次のように作成された 2 つのオブジェクトがあります。

QuadBatch sprite1 = new QuadBatch();

NewSprite sprite2 = new NewSprite();

これは がQuadBatch親クラスでありNewSprite、そのサブクラスです (つまり、継承されますQuadBatch)。

私がこれを行ったNewSpriteのは、クラス内のすべてのものQuadBatchだけでなく、追加のものも必要だったからです。

NewSprite次のようなオブジェクトを取る animate メソッドがある場合:

public void animate(NewSprite newSprite){

//animation code here

}

QuadBatchこれと同じメソッドを使用して、オブジェクトを渡すにはどうすればよいですか? QuadBatchメソッドがオブジェクトを期待しているため、オブジェクトを渡すことはできませんNewSprite

animate() メソッドが受け取った引数がQuadBatchオブジェクトであった場合、同じ質問が逆に適用されます。どうすればNewSpriteオブジェクトを渡すことができますか?

4

4 に答える 4

3

メソッドに親クラスをパラメーターとして使用させるだけです...

public void animate(QuadBatch param) {

  // animation code here

  //if you need specific method calls you could cast the parameter here to a NewSprite
  if (param instanceof NewSprite) {
      NewSprite newSprite = (NewSprite)param;
      //do NewSprite specific stuff here
  }

}

//However, hopefully you have a method like doAnimate() on QuadBatch 
//that you have overloaded in NewSprite
//and can just call it and get object specific results

public void animate(QuadBatch param) {

  param.doAnimate();

}
于 2013-09-19T20:30:22.663 に答える
1

animate() メソッドが、NewSprite オブジェクトではあるが QuadBatch オブジェクトではない呼び出しを必要としない場合は、パラメーターの型を QuadBatch に変更します。

public void animate(QuadBatch quadBatch) {
  // animation code here
}
于 2013-09-19T20:23:27.180 に答える
1

1.How can I use this same method but passing in a QuadBatch object? I can't just pass in a QuadBatch object as the method expects a NewSprite object.

animate()メソッドはオブジェクトを想定しているため、オブジェクトをNewSprite 渡すことはできません。タイプが ではないためです。QuadBatchQuadBatchNewSprite

2.The same question applies in reverse if the argument taken by the animate() method was a QuadBatch object. How could I pass in a NewSprite object?

( extends )の型であるため、 NewSpriteobject を引数としてメソッドにanimate(QuadBatch)渡すことができます。NewSpriteQuadBatchNewSpriteQuadBatch

于 2013-09-19T20:23:43.983 に答える
1

メソッドの引数を QuadBatch オブジェクトに変更します

public void animate(QuadBatch quadBatch ){

//animation code here

}

親クラスの参照を使用して、サブクラスのオブジェクトを作成できます。

QuadBatch quadBatch = new NewSprite();
于 2013-09-19T20:26:23.770 に答える