0
私はフルーツバスケットゲームを作りたいと思う。ここでのアイデアは、画面の上から下に果物を描きたいのですが、私はタイマーでそれをやりたいのです。私はいくつかの方法を試しましたが、結果はありません。ここに私がしたことがありますが、それは完全に間違っています。ゲームのためのタイマーを設定する
Timer timer = new Timer();
while (getY() != 1500) {
timer.schedule(new DrawFruit(frame, g, x) {
@Override
public void run() {
g.drawImage(Toolkit.getDefaultToolkit().getImage(Panel.class.getResource(Consts.ImageResource.APRICOT_DIR)), 500, getY(), frame);
frame.repaint();
setY(getY() + 30);
}
}, 0, 1000);
}
とDrawFruitクラス
abstract class DrawFruit extends TimerTask {
private JFrame jFrame;
private Graphics g;
private int x;
public JFrame getJFrame() {
return jFrame;
}
public void setJFrame(JFrame jFrame) {
this.jFrame = jFrame;
}
public Graphics getG() {
return g;
}
public void setG(Graphics g) {
this.g = g;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public DrawFruit(JFrame frame , Graphics g , int x){
setJFrame(frame);
setG(g);
setX(x);
}
@Override
public void run() {
}
}
ようこそスタックオーバーフロー!デバッグの助けを求める質問( "なぜこのコードは動作しないのですか?")には、目的の動作、_a特定の問題またはerror_を含める必要があります。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:[最小限で完全で検証可能なサンプルの作成方法](http://stackoverflow.com/help/mcve) –
あなたがやっていることは、問題を引き起こします...タイマーベースのソリューションは、アニメーションループの素朴な実装です。 ** Delta-Timeループ**を調べてアニメーションに使用する理由を強くお勧めします。 – XenoRo