7
저는 자바를 처음 접했습니다. 나는 게임을 만들고 싶다. 많은 연구 후, BufferStrategy가 어떻게 작동하는지 나는 ... 당신이 나중에 창에 투입 할 수있는 오프 스크린 이미지 오브젝트를 작성합니다 .. 나는 기본을 알고 .. 을 이해할 수없는 나는이버퍼 스 트래 티지 이해
public class Marco extends JFrame {
private static final long serialVersionUID = 1L;
BufferStrategy bs; //create an strategy for multi-buffering.
public Marco() {
basicFunctions(); //just the clasics setSize,setVisible,etc
createBufferStrategy(2);//jframe extends windows so i can call this method
bs = this.getBufferStrategy();//returns the buffer strategy used by this component
}
@Override
public void paint(Graphics g){
g.drawString("My game",20,40);//some string that I don't know why it does not show
//guess is 'couse g2 overwrittes all the frame..
Graphics2D g2=null;//create a child object of Graphics
try{
g2 = (Graphics2D) bs.getDrawGraphics();//this new object g2,will get the
//buffer of this jframe?
drawWhatEver(g2);//whatever I draw in this method will show in jframe,
//but why??
}finally{
g2.dispose();//clean memory,but how? it cleans the buffer after
//being copied to the jframe?? when did I copy to the jframe??
}
bs.show();//I never put anything on bs, so, why do I need to show its content??
//I think it's a reference to g2, but when did I do this reference??
}
private void drawWhatEver(Graphics2D g2){
g2.fillRect(20, 50, 20, 20);//now.. this I can show..
}
}
있어
나는 잘 모르겠다. 나는 오랫동안 이것을 연구 해왔다. 운이 없다. 나는 모른다. 어쩌면 그것은 모두 거기 있고, 그것은 정말로 분명하고 단순하다. '.. 모든 도움
감사를보고 너무 멍청 해요 .. :)
다음
버퍼를 show()하기 전에 왜()를 처리해야합니까? 나는 그래픽 객체가 오직 그래픽 기능 만 가지고 있다고 가정하지만, 필요하지 않을 때 우리는 "툴과 리소스를 릴리스"하고 버퍼링 된 이미지를 보여주는 것보다? –
@someFolk -이 순서대로 수행하지 않아도됩니다. 'bs.show()'에 대한 호출은'try' 블록 내에서 이동할 수 있습니다. 그러나 이렇게 할 특별한 이유가 없으며 필요하지 않은 즉시 시스템 리소스를 해제하는 것이 좋습니다. –