私はユニ・コースワークのためにJavax.swingライブラリを使ってゲームを作成しています。 私はウィンドウを作成しました。ゲームマップを手続き的に生成するコードを書いています。JPanelでグラフィックの位置を移動する方法
ただし、地図のフォーカスを変更できません。私の言うことは、地図が常に画面の一角にくっついていることです。 (IE:Locationは0,0に設定されているので、Graphics g(マップ)は外側に移動します)
「カメラ」を移動して、地図はプレーヤーが見ることができます。
ベロー私はマップを画面に描画する方法を貼り付けました。実行時にカメラを動かすために何ができるか教えてもらえますか? AKA:マップを左右にシフトします。
私はマップを保持するGraphicsオブジェクトを持っていると思っていましたが、そのGraphicsオブジェクトのサブイメージを描画しましたが、マップがフレームごとにどのように再描画されるか(アニメーション目的で)再描画するためのグラフィックスがさらに必要になります。 マップは、この問題を解決する最良/最も簡単な方法は、あなたのJPanelの周りにJScrollPaneを入れて、JPanelのあなたのイメージのサイズにすることです6400個の* 6400ピクセル
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
try {
for(int x = 0; x < OverworldMap.MAP_X_SIZE; x++){
for(int y = 0; y < OverworldMap.MAP_Y_SIZE; y++){
for(int layer = 0; layer < OverworldMap.MAP_LAYER_SIZE; layer++) {
g.drawImage(OverworldMap.getTileAt(x, y, layer).getSprite(), x * SPRITE_SIZE, y * SPRITE_SIZE, null);
}
}
}
} catch (Exception e) {
LauncherClass.printErrorLog(e);
}
}
1)よりよいヘルプについてはすぐに、[MCVE]を投稿したり、 [短い、自己完結型、正しい例](http://www.sscce.org/)。 2)レイアウトマネージャにサイズを示唆するために、カスタムペイントをコンポーネントに適用するときは、 'getPreferredSize()'メソッドをオーバーライドしてください。 –
[this](http:// stackoverflow .com/questions/16050723/java-applet-game-2d-window-scrolling/16052048#16052048)?あなたは、世界の「仮想」と世界の「物理的」という2つの概念を区別しなければなりません。考え方は、物理的な「ウィンドウ」を「仮想」ビューの上に重ねて、必要に応じて小さな部分を見ることができるようにしたいということです。 – MadProgrammer