Tag: bufferstrategy

三重缓冲区重闪烁

不应该将三重缓冲和Canvas作为被动渲染的最佳解决方案吗? 我刚刚编写了这个显示圆圈的java代码。 如果我将bufferstrategy留给3,它就会闪烁太多。 如果我把它调低到2或1就可以了。 也许我做错了什么? public void run(){ while (running){ update(); draw(); } } public void update(){ } public void draw(){ BufferStrategy bs = getBufferStrategy(); if (bs==null){ createBufferStrategy(3); return; } Graphics g = bs.getDrawGraphics(); g.setColor(Color.BLACK); g.fillOval(30, 30, 20, 20); g.dispose(); bs.show(); } 这是我放置Canvas的JFrame类 public class Game { public static void main (String [] args){ Pan […]

使用createBufferStrategy()的正确方法是什么?

即使在使用Java Swing超过一年之后,它对我来说仍然是神奇的。 我如何正确使用BufferStrategy,特别是createBufferSrategy()方法? 我想有一个JFrame和一个Canvas,它被添加到它然后绘制。 我还希望能够调整Canvas的大小( setSize() )。 每次我调整Canvas的大小时,似乎我的BufferStrategy被删除了,或者更确切地说,变得无用,因为在BufferStrategy上使用show()实际上并没有做任何事情。 此外, createBufferStrategy()有一个奇怪的非确定性行为,我不知道如何正确同步它。 这就是我的意思: public class MyFrame extends JFrame { MyCanvas canvas; int i = 0; public MyFrame() { setUndecorated(false); setVisible(true); setSize(1100, 800); setLocation(100, 100); setDefaultCloseOperation(EXIT_ON_CLOSE); canvas = new MyCanvas(); add(canvas); canvas.makeBufferStrat(); } @Override public void repaint() { super.repaint(); canvas.repaint(); //the bigger threshold’s value, the more likely it […]