Я пишу простую игру для изучения целей. Все идет хорошо, кроме одной мелочи ...
Я не могу понять, как вращать квадрат без этого ужасного прыжка
![enter image description here](https://i.stack.imgur.com/vfq6D.gif)
здесь упрощенная версия моей программы, иллюстрирующая проблему, здесь я использую один таймер, но в оригинальной программе у меня есть 2 таймера, один для управления состоянием игры и второй для перерисовки:
public class soQuestion extends JLabel {
double r;
@Override
public void paintComponent(Graphics g1) {
Graphics2D g = (Graphics2D) g1;
g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BICUBIC);
g.setRenderingHint(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
g.clearRect(0,0, getWidth(), getHeight());
g.translate(getWidth()/2, getHeight()/2);
g.rotate(r);
g.translate(-20, -20);
g.fillRect(0, 0, 40, 40);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
soQuestion question = new soQuestion();
frame.add(question);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setSize(200, 200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
new javax.swing.Timer(10, new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
r += 0.005;
question.repaint();
}
}).start();
}
}
прыжки более заметны, если значения дельты вращения малы, для быстро вращающихся объектов менее заметны.
все подсказки рендеринга, которые я использовал, не действуют
PS: простите за мой английский
PPS: при необходимости могу предоставить больше деталей, как это выглядит в полной версии:
![enter image description here](https://i.stack.imgur.com/tp3ZV.gif)