私はいつもより簡単に私のコードをすべて1クラスで行うことができたので、Javaで複数のクラスを使うのはあまり良くありません。最近、私が作っているゲームに2番目のクラスを使う必要があることがわかりました。私はエラーに遭遇しています。複数のクラスでのペイント
今は、ユーザーがクリックする場所と時間に敵をスポーンしようとしています。
メインクラス -
package joey.rts;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
public class RTSMain extends JFrame implements MouseListener{
/**
*
*/
private static final long serialVersionUID = -7122370886923000314L;
public static BufferedImage menu,enemy;
public static boolean onmenu,oneenemy;
public static void main(String[] args){
new RTSMain();
}
public RTSMain(){
init();
}
public void init(){
setSize(1700,1100);
setVisible(true);
setLocationRelativeTo(null);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("RTS");
addMouseListener(this);
}
public void paint(Graphics g){
Graphics2D g2 = (Graphics2D) g;
if(onmenu == true){
g2.drawImage(menu,0,0,this);
}
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
Enemy enemy = new Enemy();
int x = e.getX();
int y = e.getY();
enemy.spawnEnemy(x, y);
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
}
敵クラス - 自分のメインクラスで
package joey.rts;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
public class Enemy{
/**
*
*/
public static BufferedImage enemy;
private static final long serialVersionUID = 7898827977636314494L;
public static RTSMain rts;
public static void main(String[] args){
try{
enemy = ImageIO.read(new File(javax.swing.filechooser.FileSystemView.getFileSystemView().getHomeDirectory() + "\\enemy.png"));
} catch (Exception e){
e.printStackTrace();
}
}
public static void spawnEnemy(int x, int y){
Graphics g = rts.getGraphics();
Graphics2D g2 = (Graphics2D) g;
g2.drawImage(enemy,x,y,null);
}
}
あなたの質問は何ですか?あなたが話したこのエラーはどこでしたか? – Frecklefoot
しかし、私はOOの問題があります。 '敵がRTSMainを拡張するのはなぜですか?何かあれば、 'RTSMain'は' Enemy'のコレクションを含み、それらを描画するときに反復するだけです。そして 'spawnEnemy()'は 'Enemy'のインスタンスを生成し、それを' Enemy'コレクションに追加するだけで、次回は描画ループで描画されます(私はあなたがゲームループを使用していると仮定しています)。ちょうど私が気づいたものですが、あなたが遭遇しているエラーは何ですか? – Frecklefoot
大きな問題は第1位として 'super.paint(...) 'が欠落しています。 (グラフィックスg){'、現在のペイントはリセットされます – mKorbel