簡體   English   中英

Java游戲無法在第二台顯示器上渲染

[英]Java game won't render on second monitor

我正在使用Graphics2D和Canvas類在Java中創建一個游戲。

當我運行程序時,JFrame出現在我的第一個監視器上,沒有問題。 但是,當我將JFrame拖到我的第二個監視器上時,它將變成灰色,並且將停止呈現任何內容,然后,當我將其拖回到我的第一個監視器上時,程序將繼續呈現。

我的游戲循環在擴展Canvas Screen類中調用了draw()方法,這是draw方法。

public void draw(){
    BufferStrategy bs = getBufferStrategy();
    if(bs == null){
        createBufferStrategy(2);
        bs = getBufferStrategy();
        g = (Graphics2D) bs.getDrawGraphics();
    }

    g.setColor(Color.BLACK);
    g.fillRect(0, 0, getWidth(), getHeight());

    g.setColor(Color.WHITE);
    g.drawString("Hello, this works", 300, 300);

    g.drawImage(ImageLoader.test[0][0], 100, 100, null);

    bs.show();
}

不要在方法范圍之外保留對Graphics(或Graphics2D)對象的引用。

移動g = (Graphics2D) bs.getDrawGraphics(); 在您的if塊之外。 每次繪制時都需要獲取一個新的圖形。

完成繪制后,還需要立即處理這些圖形。

使用BufferStrategy有點復雜。 我建議您看一下BufferStrategy文檔中的示例代碼。 特別是,您需要在渲染周圍放置循環,以檢查BufferStrategy的contentsRestored()contentsLost()方法返回的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM