Java Swing在3d Board(Trapozoid)中移动

时间:2016-04-25 16:12:39

标签: java swing 3d

我正在研究一个java GUI项目,我需要在3D板中移动一个角色(带有ImageIcon的JLabel),这是2D中的梯形。 我使用的是null布局。 要做到这一点,我需要在上下移动时更改x坐标,但我无法通过等式来正确地更改它们。

这是我移动角色的代码。

private int x=0 , y=0;
private int velx = 0 , vely = 0;
private JButton[][] cells;
private int rows = 9, cols = 9;

public void moveUp()
{   
    int[] arr = { 8 , 6,4 , 2 , 0 ,0, -2 , -4 ,-6 , -8};
    vely -= h/50 ;
    velx += arr[cols];
    cells[rows][cols].setIcon(null);
    cells[--rows][cols].setIcon(position);
    width -= width/20;
    height-= height/20;
    character.setIcon(new ImageIcon(((new ImageIcon(
            icon).getImage()
            .getScaledInstance(width, height,
                    java.awt.Image.SCALE_SMOOTH)))));
    character.setBounds(x+velx, y+vely, width, height);
}

public void moveDown()
{
    int[] arr = { 8 , 6,4 , 2 , 0,0 , -2 , -4 ,-6 , -8};
    vely += h/50;
    velx -= arr[cols];
    cells[rows][cols].setIcon(null);
    cells[++rows][cols].setIcon(position);
    width += width/20;
    height+= height/20;
    character.setIcon(new ImageIcon(((new ImageIcon(
            icon).getImage()
            .getScaledInstance(width, height,
                    java.awt.Image.SCALE_SMOOTH)))));
    character.setBounds(x+velx, y+vely, width, height);
}

public void moveLeft()
{
    int[] arr = {45 , 46 , 47 , 48 , 50 , 56 , 57 ,58 , 59,60};
    velx -= arr[rows];//w/23;
    cells[rows][cols].setIcon(null);
    cells[rows][--cols].setIcon(position);
    character.setBounds(x+velx, y+vely, width, height);
}

public void moveRight()
{
    int[] arr = {45 , 46 , 47 , 48 , 50 , 56 , 57 ,58 , 59,60};
    velx +=arr[rows]; // w/23;
    cells[rows][cols].setIcon(null);
    cells[rows][++cols].setIcon(position);
    character.setBounds(x+velx, y+vely, width, height);
}

1 个答案:

答案 0 :(得分:0)

我可以根据这些信息看到一个潜在的问题。 向左或向右移动时,您不会将vely归零,因此之前或之后的所有移动都会再次发生。

尝试在velymoveLeft()

中将moveRight()设置为零