2012-04-14 139 views
0

我有这段代码,我想在java 2d游戏中启动一个跳转,事情是我的对象不会去任何地方,它只是停留在那里...我想我的对象跳,我按下键和程序,以显示我的图片动起来,并down..i正尝试通过简单的重绘()方法 CODE ::::java 2d游戏中的“JUMP”

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(); 
    } 
+0

我不会做很多Java GUI的东西,但如果我没有记错的话,我最近遇到了一个问题,通过调用'JPanel'上的'updateUI'方法来解决,我想重绘。如果你发布完整的代码,我会看看它。 – 2012-04-14 06:13:33

+0

不要忘记把你的家庭作业标记为:“功课”....? – barsju 2012-04-14 06:14:20

+0

你确定你的actionPerformed函数被调用吗? – 2012-04-14 06:14:33

回答

0

做到这一点,你需要移动位置换成另一个线程。关键处理和重绘现在在您现在的代码的同一个线程中处理。当你调用repaint()时,计划重绘,但直到事件线程再次“免费”才执行,但由于你有一个循环(有睡眠),它永远不会自由,而是在你的循环之后重绘完成(并且你的英雄回到原来的位置)。