Ergebnis 1 bis 20 von 71

Thema: [VX-Ace] Script zeigt Bild nicht an

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #16
    Scheint, als hättest du die Teile aus Linkeys Antwort irgendwie zusammengemixt.

    Vergleiche mal, wie du die Methode geschrieben hast, und wie du sie aufrufen willst. Es wird versucht @wrapper als Parameter zu übergeben, die Methode akzeptiert aber gar keine Parameter. Du willst an dieser Stelle aber nichts überschreiben (was denn auch?) oder sonst was tun, wofür ein Wert aus nötig wäre. Also weg damit.

    Code:
    @h = $game_system.memory.get_arrays

    Nächste Baustelle:

    Code:
    def get_arrays
      @wrapper = @figure_wrapper
      @names = @figure_names
      @sounds = @sound_names
    end
    Was passiert hier? So wie du es geschrieben hast, besitzt jetzt jetzt Game_Memory die Instanzvariablen @wrapper, @names, @sound, @figure_wrapper, @figure_names, @sound_names. Macht keinen Sinn, oder? Du willst die Sachen ja von außerhalb nutzen, jetzt haben wir hingegen die Arrays in doppelter Ausführung in Game_Memory.

    Weil Ruby aber immer den letzten Wert aus einer Methode zurück gibt, hat es tatsächlich auch was in deine @h-Variable geschafft. Die würde jetzt das Array mit den Sound-Namen enthalten, allerdings auch nur dieses eine Array.

    Wenn du alle drei haben willst, kannst du die Methode so umschreiben, dass sie ein "Array mit Arrays" liefert.

    Code:
    def get_arrays
      # Das "return" ist wie gesagt optional
      return [@figure_wrapper, @figure_names, @sound_names]
    end

    Dann die andere Variante, die Linkey vorgschlagen hat. Wenn du dir schon mal die anderen Klassen im Maker angesehen hast, bist du da bestimmt schon darüber gestolpert. Damit kannst du den Zugriff auf Instanzvariablen nach außen hin erlauben, ohne explizit Methoden dafür zu schreiben.

    Entweder nur lesbar: attr_reader :figure_wrapper, :figure_names, :sound_names

    nur schreibbar: attr_writer :figure_wrapper, :figure_names, :sound_names (macht in deinem Fall gerade keinen Sinn)

    Oder les- und schreibbar: attr_accessor :figure_wrapper, :figure_names, :sound_names

    Schau mal in Game_Memory in die 4. Zeile, auf @figure_names ist sogar schon zugreifbar.



    Das Endergebnis sollte also so aussehen.
    Code:
    ### Variante mit der geänderten get_array-Methode
    def navigate
      # Sieht auf den ersten Blick seltsam aus, aber wir ziehen hier die drei Werte aus dem zurückggebenen Array direkt in drei Instanzvariablen
      @figure_wrapper, @figure_names, @sound_names = $game_system.memory.get_arrays
    end
    
    
    ### Variante mit attr_reader oder attr_accessor
    def navigate
      @figure_wrapper = $game_system.memory.figure_wrapper
      @figure_names = $game_system.memory.figure_names
      @sound_names = $game_system.memory.sound_names
    end

    Geändert von Cepanks (28.06.2015 um 16:52 Uhr)

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •