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

第一个例子是正确的用法。每次调用 render 时,我都没有想到创建本地缓冲区策略字段的实际原因。(如第二个示例所示)

创建一个缓冲区策略并将其分配给一个字段(就像在您的第一个示例中一样)应该只在渲染函数之外完成一次。

于 2013-07-09T22:38:02.497 回答
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 回答