2013-04-13 4 views
2

Я пробовал множество решений, и я не могу найти проблему с моим кодом. Я проверил имена путей, разрешения для файлов и попробовал несколько разных имен файлов для изображения. Изображение не отображается.Метод getImage показывает пробел

private Character player; 
private Image image, sprite; 
private URL base; 
private Graphics second; 

@Override 
public void init() { 
    setSize(500,500); 
    setBackground(Color.white); 
    setFocusable(true); 
    addKeyListener(this); 
    Frame frame = (Frame)this.getParent().getParent(); 
    frame.setTitle("Joules"); 
    try { 
     base = getDocumentBase(); 
     sprite = getImage(base,"kips.PNG"); 
    } catch (Exception e) { 
    } 

    //  sprite = getImage(base,"kips.PNG"); 
} 

@Override 
public void start() { 
    player = new Character(); 

    Thread thread = new Thread(this); 

    thread.start(); 
} 

    @Override 
public void update(Graphics g) { 
    if (image == null) { 
     image = createImage(this.getWidth(), this.getHeight()); 
     second = image.getGraphics(); 
    } 

    second.setColor(getBackground()); 
    second.fillRect(0, 0, getWidth(), getHeight()); 
    second.setColor(getForeground()); 
    paint(second); 

    g.drawImage(image, 0, 0, this); 
} 

@Override 
public void paint(Graphics g) { 
     g.drawImage(sprite,player.getCenterX(),player.getCenterY(),this); 
} 

@Override 
public void run() { 
    while (true) { 
     repaint(); 
     try { 
      Thread.sleep(34); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

Пожалуйста, помогите ...

+0

Где это 'метод getImage'? (Что объявляет класс?) – acdcjunior

+1

@acdcjunior См. ['Applet.getImage (URL)'] (http://docs.oracle.com/javase/7/docs/api/java/applet/Applet.html#getImage% 28java.net.URL% 29) и перегруженный вариант сразу после этого. –

+0

Я также попытался получить доступ к файлу, установив URL-адрес имени изображения на компьютере. Я получил исключение из-за неправильного URL-адреса. Я все еще подозреваю, что путь как-то недостижим, но я потерян. – user1610810

ответ

0

Я просто имел этот вопрос и обнаружил, что getDocumentBase() возвращает огромный путь, который является базой текущего апплета, а не проект.

Вместо этого я использовал getCodeBase(), который возвращает «../projectName/bin/», поэтому переместите назад одну папку в свои относительные пути в коде.

base = getCodeBase();
sprite = getImage(base,"../kips.PNG");

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