0

我有这段代码,我想在java 2d游戏中启动一个跳转,问题是我的对象没有去任何地方,它只是呆在那里......我希望我的对象在我按下键和程序显示时跳转我的图像上下移动..我试图通过简单的 repaint() 方法 CODE:::: 来做到这一点

    public void actionPerformed(ActionEvent e) {
    if(hero.jump()==1){
    int jumpheight=40,j=0;
    while(j<jumpheight){
        hero.y--;             \\changing the y position (up)..
            try {
            Thread.sleep(100);
        } catch (InterruptedException e1) {}
        repaint(); 
        j++;
    }
    j=0;
    hero.jump1=0;
    while(j<jumpheight){
        hero.y++;               \\changing the y position (down)..
            try {
            Thread.sleep(100);
        } catch (InterruptedException e1) {}
        repaint(); 
        j++;
    }
    }
    else {
    hero.move();
    repaint();  
    }
4

1 回答 1

0

您需要将位置更改移动到另一个线程中。密钥处理和重绘现在在您现在拥有的代码中的同一个线程中处理。当您调用repaint()时,会安排重绘,但直到事件线程再次“空闲”时才会执行,但由于您有一个循环(带睡眠),它永远不会空闲,而是您的重绘将在您的循环完成后发生(而你的英雄又回到了原来的位置)。

于 2012-04-16T07:05:04.777 回答