2015-05-15 3 views
1

Я новичок в Tween, поэтому я сделал рамку с 1 изображением и попытался переместить ее с 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(); 
     } 
    } 
} 

Движение работает, но перекраска не работает, поэтому изображение оставляет след изображений по пути.

Если кто-то знает, в чем проблема, пожалуйста, помогите!

+0

Вы - лучший! – Djokix

+0

Я просто добавил строку super.paint (g), и она работает !! Большое спасибо!! – Djokix

+0

Счастливый быть полезным. –

ответ

0

repaint() не очищает JPanel, он просто указывает, что метод краски необходимо вызвать снова. В вашем методе рисования вы должны очистить фон перед рисованием.

Я бы установил фон (белый или черный) с setBackground(Color.BLACK); в конструкторе JPanel, а затем позвонил super.paint(g) в верхней части вашего метода рисования. Вероятно, вам также не нужно вызывать перерисовку в вашем методе рисования.