簡體   English   中英

Java ImageIcon動畫閃爍

[英]Java ImageIcon Animation Flashing

切換圖標時形成某些原因圖像閃爍。 當我嘗試創建對象然后嘗試通過將x和y作為參數傳遞給對象來使它們移動時,我也遇到了這個問題。 任何幫助都會很棒。

public class Main extends JFrame implements ActionListener, KeyListener{

static Main main;
Render render;
Timer timer;

static int x,y,count;

ImageIcon player1 = new ImageIcon("C:\\Users\\Kyle\\Documents\\NetBeansProjects\\Testing52\\src\\testing52\\Player1.png");
ImageIcon player2 = new ImageIcon("C:\\Users\\Kyle\\Documents\\NetBeansProjects\\Testing52\\src\\testing52\\Player2.png");

Main(){

    render = new Render();
    timer = new Timer(100,this);

    setVisible(true);
    setSize(500,500);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setResizable(false);
    addKeyListener(this);
    add(render);

    timer.start();

}

public void render(Graphics g){

    count += 1;

    if(count < 20){
         player1.paintIcon(this, g, x, y);
    }

    if(count > 20){
        player2.paintIcon(this, g, x, y);
    }
    if(count > 40){
        count = 0;
    }

}


public static void main(String [] args){

    main = new Main();
}

@Override
public void actionPerformed(ActionEvent e) {

    System.out.println(count);
    render.repaint();  
}

@Override
public void keyTyped(KeyEvent e) {
}

@Override
public void keyPressed(KeyEvent e) {
    int id = e.getKeyCode();

    int speed = 4;

    if(id == KeyEvent.VK_UP){

        y -= speed;     
    }

    if(id == KeyEvent.VK_DOWN){

        y += speed;
    }

    if(id == KeyEvent.VK_LEFT){

        x -= speed;
    }

    if(id == KeyEvent.VK_RIGHT){

        x += speed;
    }
}

@Override
public void keyReleased(KeyEvent e) {
}

}

渲染類。

 public class Render extends JPanel {

public void paintComponent(Graphics g){
    super.paintComponent(g);

    Main.main.render((Graphics)g);
}

}

另一件可以使你的動畫更流暢的事情是你在repaint()之后在你的動作事件中調用了revalidate() repaint()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM