2012-02-23 9 views
1

私は2Dゲームを作成し、フレーム内のサーフェスに描画しています。ここでの問題は、この、私は背景をループしていますし、(画像がタイル状に使用して)背景画像を描画された結果である:Javaフレームのサイジング自体が間違っています

注:私は640480

enter image description here

ようにフレームを設定します

frame = new Frame(_title); 


    frame.addWindowListener(new WindowAdapter() { 
     public void windowClosing(WindowEvent e) { 
      System.exit(0); 
     } 
    }); 


    frame.addMouseListener(new Mouse()); 
    frame.addKeyListener(new Keyboard()); 
    frame.setSize(new Dimension(width, height)); 
    frame.setResizable(false); 
    frame.setBackground(Color.lightGray); 
    frame.setVisible(true); 
    frame.createBufferStrategy(2); 
:私はフレームを初期化するために、このコードを使用しています

あなたは..私はトップについて主に心配して、上部と左側が数ピクセルではオフになっています見ることができます私はそれがうまく働くだろうと思ったが、明らかではない。..

私が間違って何をやっているか、私はこれをどのように問題を解決することができただろう

for(int x = 0; x < GameClient.width; x+= 32) { 
     for(int y= 0; y< GameClient.height; y+= 32) { 
       g.drawImage(floor, x , y, null); 

     } 
    } 

そして、ここでは、私は、背景を描いています方法です?

ありがとうございました。

答えて

1

、その後、あなたはこれらの点で描画を開始:ここで


は完全な例です。

+0

ありがとう、それは素晴らしい仕事:) –

3

まず、あなたはスイングを使用していて、古いawtは使用しないでください(ただし原則は同じです)。


フレームは境界線を含む左上隅から始まります。フレームにコンポーネントを追加し、そのコンポーネントメソッドのpaintComponentを上書きして、正しい開始座標を取得します。 frame.getInsets.top()frame.getInsets().leftを使用し、いずれかの方法で

enter image description here

public static void main(String[] args) { 

    JFrame frame = new JFrame(); 
    frame.add(new JComponent() { 
     @Override 
     protected void paintComponent(Graphics g) { 
      super.paintComponent(g); 

      g.setColor(Color.GRAY); 
      for (int x = 0; x < getWidth(); x += 32) 
       for (int y = 0; y < getHeight(); y += 32) 
        g.fill3DRect(x+1, y+1, 30, 30, true); 
     } 
    }); 

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setSize(600, 600); 
    frame.setVisible(true); 
} 
+0

私はJFrameを使用していませんが、私はAWTのフレームを使用しています。私はそれが重要かどうかは分かりませんが。 –

+1

あなたの編集に返信すると、私はSwingの代わりに2Dゲーム開発のためにAWTを使うべきであることをこのウェブサイトのユーザーから聞きました。 –

+2

+1これは正解です。 OPはあまり適切でない戦略を正しいものとして選んだ。 「AWTを使うように言われました」。そのアドバイスは、おそらくカスタムペイントを行うためのものでしたが、通常はAWTでクラスを使用するだけです。 'Graphics'や' Graphics2D'、 'Color'や' Font'といったものが一般的です。使用するコンポーネント***については、すべてSwingである必要があります。私は、AWTコンポーネントをこの日と年齢で使用することによる「パフォーマンスの大幅な向上」が存在するかどうかは疑いの余地があります。 –

関連する問題