Привет, ребята. Я работаю над программой, которая должна изменять изображения при вводе ключа. Я использовал анимированный GIF для каждого изображения, и мне интересно, почему при запуске мелькает только анимированный GIF слева направо. Я просматривал форумы и видел, что java по умолчанию включает двойную буферизацию, но я установил это явно на всякий случай, почему это происходит?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class KeyEventAnimation extends JApplet implements KeyListener
{
Image img;
JLabel zil;
int x=0, y=0, speed=10; // x,y coordinates and how many pixels move
JPanel pane;
public void init( )
{
pane = new JPanel( );
pane.setLayout( null );
pane.setBackground( Color.WHITE );
img = getImage( getCodeBase( ), "zil_walk_front.gif" );
zil = new JLabel( new ImageIcon(img) );
zil.setSize( img.getWidth(this), img.getHeight(this) );
addKeyListener(this);
pane.add( zil, 0, 0 );
add( pane, BorderLayout.CENTER );
setFocusable(true);
}
public void keyReleased( KeyEvent ke ) { }
public void keyTyped( KeyEvent ke ) { }
public void keyPressed( KeyEvent ke )
{
int code = ke.getKeyCode( );
if( code == KeyEvent.VK_UP ){
y -= speed;
zil.setIcon(new ImageIcon("zil_walk_back.gif"));
} else if ( code == KeyEvent.VK_DOWN ){
y += speed;
zil.setIcon(new ImageIcon("zil_walk_front.gif"));
} else if ( code == KeyEvent.VK_LEFT ){
x -= speed;
zil.setIcon(new ImageIcon("zil_walk_left.gif"));
} else if ( code == KeyEvent.VK_RIGHT ){
x += speed;
zil.setIcon(new ImageIcon("zil_walk_right.gif"));
}
zil.setLocation(x,y);
}
}