2012-03-28 4 views
1

Ich versuche einen NXT Robotersimulator mit lejOS zu schreiben, wo der Roboter Hindernisse vermeiden kann, aber ich möchte, dass die Hindernisse im Code erzeugt werden. Der folgende Code ermöglicht die Erstellung von Circle.jpg, aber der Code stürzt ab, wenn er versucht, das erstellte Bild zu verwenden. Der Code funktioniert in Intellij IDEA, aber nicht mit einem zuvor erzeugten Bild. Ich habe folgendes ohne Ergebnisse versucht:Java-generierte Bilder können nicht in Code verwendet werden, der sie generiert hat?

  • Gebrauchte .png statt .jpg
  • Gebrauchte und Bild von einem vorherigen Lauf erzeugt, dh es ist bereits vorhanden.
  • von opak geändert Typ durchscheinend usw.

Ich frage mich, was ich tue, das macht das Bild meinen Code abstürzen, wenn im laufenden Betrieb das Bild zu erzeugen?

Update: Hinzugefügt Befehl zum Aufrufen von neuen JPG und ein Bild des Fehlers.

public static void obstacleFactory() 
{ 
    int width = 30; 
    int height = 30; 

    GraphicsEnvironment environment = 
      GraphicsEnvironment.getLocalGraphicsEnvironment(); 

    GraphicsDevice device = 
      environment.getDefaultScreenDevice(); 

    GraphicsConfiguration config = device.getDefaultConfiguration(); 

    BufferedImage bufferedImage = config.createCompatibleImage(width, height, 
      Transparency.TRANSLUCENT); 

    Graphics2D g2d = bufferedImage.createGraphics(); 

    g2d.setColor(Color.yellow); 
    g2d.fillOval(0, 0, width, height); 

    g2d.dispose(); 

    RenderedImage rendImage = bufferedImage; 

    try { 
     File file = new File("src/sprites/Circle.jpg"); 
     ImageIO.write(rendImage, "jpg", file); 
    } catch (IOException e) {} 
} 

Und der Befehl die jpg aufzurufen ist

NxtContext.useObstacle("sprites/Circle.jpg", 250, 475); 

Dies ist, was Eclipse sagt: enter image description here

Antwort

1

ich keine Probleme mit dem Code in Eclipse haben, mit Ausnahme der Ellipse Farben . Was meinst du mit "der Code stürzt"? Machst du eine Ausnahme? Was ist die Information darin? Könnte es sein, dass du einfach keinen "src/sprites" Pfad hast?

+0

Aktualisierte Frage, danke. – FossilizedCarlos

+0

Ich kenne das lejOS/NXT nicht, aber die Ausnahme scheint hauptsächlich mit dem Laden zu tun zu haben, nicht mit dem Speichern. Sind Sie sicher, dass Sie Ihren Dateipfad korrekt angegeben haben? In dem Erstellungscode verwendest du 'src/sprites /', aber in der Ladung verwendest du nur 'sprites /', ist das OK? Vielleicht möchten Sie die Dokumentation zur Angabe des Pfades für den Actor überprüfen (zB hier: 'http://www.aplu.ch/classdoc/jgamegrid/ch/aplu/jgamegrid/Actor.html#Actor(boolean, java.lang. String) ') – Mikhail

+0

Ja. Die Bilder stammen von/sprites, vorausgesetzt, die lejOS-Bibliothek kümmert sich um den Rest. Die Bilder, die ich generiere, stammen aus normalem Java-Code, also muss ich den vollständigen Pfad angeben. – FossilizedCarlos

Verwandte Themen