小编sil*_*lex的帖子

JavaFX Canvas Double Buffering

我正在使用JavaFX在Java中复制经典游戏Pong.我使用java.util.Timer,java.util.TimerTask进行游戏循环,使用JavaFX的Canvas进行渲染.有没有办法为Canvas添加双缓冲,以便动画不会闪烁?或者我应该采用不同的方法吗?贝娄是代码.我删除了它的一些部分,我认为这些部分无关紧要,因为代码长约200行.

Canvas canvas = new Canvas(stageW, stageH);
GraphicsContext gc;

public void start(Stage stage) throws Exception {
    Group root = new Group();

    gc = canvas.getGraphicsContext2D();

    Timer loop = new Timer();

    root.getChildren().add(canvas);

    loop.schedule(new GameLoop(), 0, 1000 / 60);

    stage.setScene(new Scene(root,stageW, stageH));
    stage.show();
}

public class GameLoop extends TimerTask {
    @Override
    public void run() {
        draw(gc);
        collisionDetect();
        ball.move();
    }
}

public void draw() {
    gc.setFill(Color.BLACK);
    gc.fillRect(0, 0, stageW, stageH);

    gc.setFill(Color.WHITE);
    gc.fillRect(lBat.getX(), lBat.getY(), lBat.getW(), lBat.getH());
    gc.fillRect(rBat.getX(), rBat.getY(), rBat.getW(), rBat.getH());
    gc.fillRect(ball.getX(), ball.getY(), ball.getW(), ball.getH());
}
Run Code Online (Sandbox Code Playgroud)

java javafx canvas double-buffering 2d-games

2
推荐指数
1
解决办法
4385
查看次数

标签 统计

2d-games ×1

canvas ×1

double-buffering ×1

java ×1

javafx ×1