0

I have this code and I wanted to initiate a jump in a java 2d game,the thing is that my object doesnt goes anywhere,it just stays there...i wanted my object to jump as i press the key and the programme to show me images moving up and down..i am trying to do this by simple repaint() method 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 に答える