0

私は本やオンラインビデオでいくつかの例を探してきました. 人々が bufferStrategy を作成するとき、非常に多くの異なる方法でそれを行っていることがわかりました。

たとえば、私が理解しているように、私は

 BufferStrategy bufferStrat = null;
    canvasObject.createBufferStrategy(3);
    bufferStrat = canvasObject.getBufferStrategy();

そして、私は先に進み、次のようなことを行うことができます

Graphics g = bufferStrat.getDrawGraphics();

しかし、私は最近、誰かがこのようにしているのを見ました (私が取り組んでいるクラスが Canvas を拡張していると想像してください)。

public void render(){
BufferStrategy bufferStrat = getBufferStrategy(); //I understand that this returns a null
if(bufferStrat == null){
createBufferStrategy(3);
return;
}
Graphics g = bufferStrat.getDrawGraphics();
}

誰かがここで何が起こっているのか正確に説明できますか? ありがとう。

4

2 に答える 2

0

何度も作成されることはありません...一度だけ作成されます! これは、BufferStrategyが null と等しくない場合、新しいものを作成しないためです。これは、2D ゲームでよく使用されます (たとえば)。

私はむしろ最初の例を好みますが、これも便利なコードです。

public void render(){
    BufferStrategy bufferStrat = getBufferStrategy(); //I understand that this returns a null
    if(bufferStrat == null){
        createBufferStrategy(3);
        return;
    }
    Graphics g = bufferStrat.getDrawGraphics();
}
于 2014-04-04T13:08:11.567 に答える
0

最初の例は正しい使い方です。render が呼び出されるたびにローカルの bufferstrategy フィールドを作成する理由は考えられません (2 番目の例のように)。

bufferstrategy の作成とフィールドへの割り当て (最初の例のように) は、render 関数の外で一度だけ行う必要があります。

于 2013-07-09T22:38:02.497 に答える