Чудех се дали има функция като void draw()
, която Обработка език за програмиране използва, който се извиква всеки кадър. Или дори просто функция, която зацикля безкрайно, когато бъде извикана, но преминава през нея само всеки път, когато има нов кадър. Чух за нещо, наречено runnable в java, как да използвам това? също така има ли по-добър начин от това да имате възможност за изпълнение със закъснение като функция, която е твърдо кодирана да изпълнява всеки кадър. О, и също така какво е извикването на функция, което ще ми позволи да видя колко време (за предпочитане в милисекунди) откакто приложението е започнало да работи, по този начин мога да направя извикванията на runnables/frame много по-прецизни, така че играта да работи приблизително със същата скорост на всеки компютър, независимо от честотата на кадрите.
Java функция, която се извиква всеки кадър
Отговори (1)
Може би имате нужда от нещо подобно
import java.awt.Graphics;
import java.awt.Point;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.SwingWorker;
public class Repainter extends JPanel {
private Point topLeft;
private int increamentX = 5;
public Repainter() {
topLeft = new Point(100, 100);
}
public void move() {
topLeft.x += increamentX;
if (topLeft.x >= 200 || topLeft.x <= 100) {
increamentX = -increamentX;
}
repaint();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawRect(topLeft.x, topLeft.y, 100, 100);
}
public void startAnimation() {
SwingWorker<Object, Object> sw = new SwingWorker<Object, Object>() {
@Override
protected Object doInBackground() throws Exception {
while (true) {
move();
Thread.sleep(100);
}
}
};
sw.execute();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame("Repaint Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 400);
Repainter repainter = new Repainter();
frame.add(repainter);
repainter.startAnimation();
frame.setVisible(true);
}
});
}
}
person
Mohayemin
schedule
16.07.2012
frame
За графичен прозорец ли говорите? - person Mohayemin   schedule 16.07.2012