2
私はJavaでゲームを書いています。私はdrawRect()メソッドを使ってプレイヤー、敵、ショットを表現し始めました。すべてが素晴らしかったです。 それから私は空想を得ようと決めました。 各オブジェクトの.pngイメージを作成して、Graphics2D drawImage()メソッドを使用していました。すべてが減速し始めた。プロセスをスピードアップする方法がありますか?Java JPanel animation
私のアニメーションはスイングタイマー
public void paint(Graphics g){
super.paint(g);
Graphics2D g2d = (Graphics2D)g;
player1.paintShips(g);
g2d.drawImage(bGround, 14, 14, this);
try{
for(Shot s: liveRounds){ //liveRounds is an ArrayList of Shots
if(!inBounds.contains(s.getRect()) || villains.collision(s)){
if(villains.collision(s)){
villains.collided(s, this);
}
liveRounds.remove(s);
roundCount--;
}
else{
s.paintShot(g, this);
}
}
}catch(ConcurrentModificationException e){};
villains.paintEnemyGrid(g, this);
g2d.setColor(Color.cyan);
g2d.draw(hitZone1);
g2d.setColor(Color.red);
g.drawString("X: " + player1.getX(1) + " Y: " + player1.getY(1), 370, 150);
g2d.draw(inBounds);
g.drawString(score + "", 440, 40);
g.dispose();
}
アニメーション上の任意のヒントやチュートリアルに基づいていますか? ありがとう
タイマーの遅延はどのくらいですか?なぜあなたは 'ConcurrentModificationException'をキャッチして、それらを無視していますか?反復処理中にオブジェクトを 'Collection'から削除したいのであれば、whileループで' Iterator'を手動で使用し、 'Iterator#remove'を使うべきです。 – Jeffrey
私はそれを10に設定しました、それは速すぎるでしょうか? – user1320716
10ミリ秒の遅延は100フレーム/秒です。それはほぼ確実に速すぎます。 – Jeffrey