Zitat Zitat von Lil_Lucy Beitrag anzeigen
Punkt 1 ist: Scheinbar gibt er beim Anzeigen des Bildes im Fenster noch etwas Spielraum an den ändern, soll heißen: Ein Fenster mit den Maßen 320x240 Pixel zeigt ein Bild mit den gleichen Maßen nicht deckungsgleich über dem Fenster an. Kann mir jemand bitte sagen, warum und vor allem, wie groß der Abstand genau ist, damit ich das kompensieren kann?
Die Window-Klasse besitzt zwei Attribute, "ox" und "oy", diese beiden Attribute geben eine Verschiebung des contents in pixeln an. Mit ox kannst du die contents nach links schieben; mit oy nach oben. Um jeweils nach Rechts / Unten zu schieben musst du entsprechend negative Werte verwenden.
Im Moment hast du die linke obere Ecke deines Bildes an dem Punkt (0, 0). Du willst aber, dass das Bild in der Mitte des Fensters zentriert wird. Dafür brauchst du eine kleine Rechnung; denk kurz darüber nach, vielleicht kommst du ja von selbst drauf.
Hier ein kleiner Tipp, du kannst die Attribute "width" und "height" sowohl von der Window-Klasse als auch von den contents verwenden.
Sprich:
Code:
self.width
gibt die Breite des Fensters in Pixeln an, und
Code:
self.contents.width
gibt die Breite des Bildes für das Item in Pixeln an. Natürlich muss das Bild dafür davor gesetzt worden sein.

Zitat Zitat von Lil_Lucy Beitrag anzeigen
Punkt 2: Wie kann ich bei "set_item" noch eine Abfrage einbauen ob eine Datei mit dem Namen der Icon-Grafik tatsächlich im Picture-Ordner liegt? Möchte gerne eine Platzhalter-Grafik anzeigen lassen, wenn das nicht der Fall ist, statt einer Fehlermeldung mit Programmabbruch. Ist hauptsächlich für Testspiele während der Entwicklung, wenn ich noch nicht für jedes neue Item ein passendes Bild habe.
Leider ein kleines bisschen kompliziert.
Damit du dies in Ruby überprüfen kannst musst du das Modul "FileTest" verwenden. Das Modul besitzt eine Methode namens "exists?" welche überprüft, ob eine Datei existiert oder nicht.
Diese Methode benötigt jedoch einen Dateipfad als Parameter.

Hier ein kleines Code-Schnipsel um nach einem Picture zu prüfen:
Code:
  def set_item(item)
    if item != @item
      @item = item
      path = "Graphics/Pictures/"+item.icon_name+".png"
      # Prüft ob das Picture im Picture-Ordner existiert oder nicht
      if FileTest.exists? (path)
        self.contents = RPG::Cache.picture(item.icon_name) # Lädt ein Picture aus dem Picture-Ordner
      else
        self.contents = Bitmap.new(1, 1) # erstellt ein neues, leeres Bitmap
      end
    end
  end
Vielleicht hilft dir das ja weiter.