如何让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。
我是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。