如何让tween正常工作?

how to make tween work normally?

我是Tween的新手,所以我用一张图片制作了框架并尝试用Tween移动它。代码:

public class Fram extends JFrame {

    public Fram() {
        setSize(700, 500);
        setLocationRelativeTo(null);
        add(new Panol());

        setVisible(true);
    }

    public static void main(String[] args) {
        new Fram();
    }

    public class Panol extends JPanel implements ActionListener {
        Imag img;
        Rectangle r;
        TweenManager tm;
        Tween tween;
        Timer time;
        boolean t;

        public Panol() {

            tm = new TweenManager();
            img = new Imag(new ImageIcon(
                    "C:/Djokix/JAVA/SlideProba/src/AL/Ludi Durenmatt.png"),
                     10, 10, 100, 100);

            Tween.registerAccessor(Imag.class, new ParticleAccessor());

            Tween.to(img, ParticleAccessor.POSITION_XY, 100).target(200, 300)
                    .ease(Quad.INOUT).delay(1000)
                    .start(tm);
        }

        @Override
        public void paint(Graphics g) {

            g.drawImage(img.getImg(), (int) img.x, (int) img.y, (int) img.w,
                    (int) img.h, null);

            tm.update(1);
            repaint();
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            repaint();
        }
    }
}

移动有效但重绘无效,因此图片沿途留下了图像的痕迹。

如果有人知道问题出在哪里,请帮忙!

repaint()并没有清除JPanel,只是表示需要重新调用paint方法。在你的paint方法中,你应该在绘制之前清除背景。

我会在 JPanel 构造函数中使用 setBackground(Color.BLACK); 设置背景(白色或黑色),然后在 paint 方法的顶部调用 super.paint(g)。您可能也不需要在您的 paint 方法中调用 repaint。