2013-04-20 2 views
0

Я работаю над Eclipse Indigo в течение нескольких месяцев, и у меня возникла ошибка, на которую я не могу найти ответа. Я создаю небольшую 2d-скроллерную игру, похожую на игру mario, старую zelda и т. Д.Eclipse Indigo bug

Я собирался показать моему отцу, какую новую функцию я добавил в свою программу. Вместо того, чтобы подняться наверх, чтобы увидеть мою программу на моем компьютере, мой папа решил, что он может проникнуть в нее, используя ту, что я не уверен. Мы использовали это раньше, и в основном все это позволяет вам видеть экран другого компьютера в вашем доме (в том же IP-интерфейсе), и вы также можете использовать компьютер.

Я не хотел показывать свою программу моему отцу таким образом, поэтому я сказал ему подняться наверх. Он сделал это, и с тех пор eclipse не будет отображать графику внутри вашего JFrame в вашей программе. Он будет показывать такие вещи, как слова (написанные на экране), но не будет показывать ЛЮБОЙ графикой. Например, ваше фоновое изображение, ваш персонаж или что-то еще. Я ПОЗИТИВНО, что это не какая-то проблема с моим кодированием, потому что я тестировал и играл в игру довольно много раз, прежде чем мой папа сделал просмотр экрана (мы оба на linux mint 12, BTW).

Я думаю, что эта ошибка связана с экраном.

Мне бы очень понравилось, если бы я мог помочь. любой был бы велик. Благодарю.

-Эта была решена *

Board

package External; 

import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.Image; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.KeyAdapter; 
import java.awt.event.KeyEvent; 

import javax.swing.*; 

public class Board extends JPanel implements ActionListener, Runnable { 
    Dude p; 
    Image img;  
    Timer time; 
    int v = 172; 
    Thread animator; 

    boolean a = false; 
    boolean done2 = false; 

    public Board() { 
     p = new Dude(); 
     addKeyListener(new AL()); 
     setFocusable(true); 
     ImageIcon i = new ImageIcon ("/home/clark/Desktop/Swindle_test_background.png"); 
     img = i.getImage(); 
     time = new Timer (3, this); 
     time.start(); 
    } 

    public void actionPerformed(ActionEvent e) { 
     p.move(); 
     repaint(); 
    } 
    public void paint(Graphics g) { 
     if (p.dy == 1 && done2 == false) 
     { 
      done2 = true; 
      animator = new Thread(this); 
      animator.start(); 
     } 
     super.paint(g); 
      Graphics2D g2d = (Graphics2D) g; 
    if ((p.getX() - 590) % 2400 == 0) 
     p.nx = 0;  
    if ((p.getX() - 1790) % 2400 == 0) 
     p.nx2 = 0; 
      g2d.drawImage(img, 985-p.nx2, 0, null); 
      if (p.getX() >= 921) 
      g2d.drawImage(img, 985-p.nx, 0, null); 
      g2d.drawImage(p.getImage(), 75, v, null); 


    } 

    private class AL extends KeyAdapter { 
     public void keyReleased(KeyEvent e) { 
      p.keyReleased(e); 
     } 
     public void keyPressed(KeyEvent e) { 
      p.keyPressed(e); 
     } 

    } 
    boolean h = false; 
    boolean done = false; 

    public void cycle() { 
     if (h == false) 
       v--; 
     if (v == 125) 
       h = true; 
     if (h == true && v <= 172) { 
       v++; 
     if (v == 172) { 
        done = true; 

     } 
    } 
} 




    public void run() { 

     long beforeTime, timeDiff, sleep; 

     beforeTime = System.currentTimeMillis(); 

     while (done == false) { 

       cycle(); 

       timeDiff = System.currentTimeMillis() - beforeTime; 
       sleep = 10 - timeDiff; 

       if (sleep < 0) 
         sleep = 2; 
       try { 
         Thread.sleep(sleep); 
       } catch (InterruptedException e) { 
         System.out.println("interrupted"); 
       } 

       beforeTime = System.currentTimeMillis(); 
     } 
     done = false; 
     h = false; 
     done2 = false; 
} 

} 

Чувак

package External; 

import java.awt.Image; 
import java.awt.event.KeyEvent; 

import javax.swing.ImageIcon; 

public class Dude { 
    int x, dx, y, nx2, nx, dy; 
    Image Swindle_Man_Right; 
    ImageIcon r = new ImageIcon("/home/clark/Desktop/Swindle_Man_Right.png"); 
    ImageIcon l = new ImageIcon("/home/clark/Desktop/Swindle_Man_Left.png"); 
    ImageIcon j = new ImageIcon("/home/clark/Desktop/Swindle_Man_Jump.png"); 

    public Dude() { 
     Swindle_Man_Right = l.getImage(); 
     x = 75; 
     nx2 = 685; 
     nx = 0; 
     y = 172; 

} 


public void move() { 
    x = x + dx; 
    nx2 = nx2 + dx; 
    nx = nx + dx; 
} 
public int getX() { 
    return x; 
} 
public int getY() { 
    return y; 
} 

public Image getImage() { 
    return Swindle_Man_Right; 
} 

public void keyPressed(KeyEvent e) { 
    int key = e.getKeyCode(); 
    if (key == KeyEvent.VK_LEFT) 
    {    dx = -1; 
    Swindle_Man_Right = l.getImage(); 
      } 
    if (key == KeyEvent.VK_RIGHT) 
      {dx = 1; 
    Swindle_Man_Right = r.getImage(); 
      } 

    if (key == KeyEvent.VK_UP) 
      {dy = 1; 
      Swindle_Man_Right= j.getImage(); 
      }      } 

public void keyReleased(KeyEvent e) { 
    int key = e.getKeyCode(); 

    if (key == KeyEvent.VK_LEFT) 
      dx = 0; 

    if (key == KeyEvent.VK_RIGHT) 
      dx = 0; 

    if (key == KeyEvent.VK_UP) 
      {dy = 0; 
      Swindle_Man_Right= r.getImage();} 
      } 
} 

Рама

package External; 

import javax.swing.*; 

public class Frame { 

    public Frame() { 
     JFrame frame = new JFrame("Swindle [version 0.1.9]"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(700,390); 
     frame.setResizable(false); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
    } 
    public static void main(String[] args) { 
     new Frame(); 
} 

} 

ответ

1

Насколько я могу судить, вы ничего не добавили к кадру.

После того как я заменил графику с моим собственным, я был в состоянии получить это работает ...

enter image description here

public class Frame { 

    public static void main(String[] args) { 
     new Frame(); 
    } 

    public Frame() { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { 
       } 

       JFrame frame = new JFrame("Swindle [version 0.1.9]"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

       // This is kind of important... 
       frame.add(new Board()); 

       frame.setSize(700, 390); 
       frame.setResizable(false); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 
     }); 
    } 
} 

В то время как я только дал код быстрый взгляд, я бы рекомендовал вы не используете ImageIcon для загрузки изображений и вместо этого используйте ImageIO API. Помимо поддержки большего количества форматов изображений, он будет вызывать больше ошибок, когда он не может загрузить изображения.

Я бы также избегал использования KeyListener в пользу key bindings. Они не страдают от таких же фокусных вопросов, как KeyListener

+0

** Спасибо, что так много MadProgrammer! Оказывается, это была проблема с моим кодированием, хотя я был уверен в себе, что это не так. Наверное, это значит, что я должен больше держать свой ум открытым. То, что вы добавили в мой класс ** Frame **, заставило мою программу работать как новый. Вы заслуживаете печенья за ваш замечательный ответ! – user2278779

Смежные вопросы