2
所以我正在用Java寫一個遊戲,並且我開始使用drawRect()方法來表示玩家,敵人和鏡頭。一切都很好。 然後我決定試着去想。 我發現自己創建每個對象的.png圖像,並使用Graphics2D drawImage()方法。一切都開始放緩。有沒有其他方法可以加快這個過程?Java JPanel動畫
我的動畫是基於Swing的計時器
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並忽略它們?如果要在迭代時從「集合」中刪除對象,則應該在while循環中手動使用它的'Iterator'並使用'Iterator#remove'。 – Jeffrey 2012-04-08 20:04:26
我把它設置爲10,會不會太快? – user1320716 2012-04-08 20:06:04
10毫秒的延遲是每秒100幀。這幾乎肯定是太快了。 – Jeffrey 2012-04-08 20:07:31