Sprite durch Dateipfad von Bild auf Festplatte ersetzen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Sprite durch Dateipfad von Bild auf Festplatte ersetzen

    Hallo, ich will ein Sprite ändern, indem ich es gegen ein Bild von meiner Festplatte ersetze.
    So mal grob der Code zum besseren Verständnis:

    Der Code steht in einem Objekt "obj_Manager", welches das Bild von der Festplatte auf ein anderes Objekt "obj_bild" zuweist.
    Am Anfang darf sich der Nutzer ein Bild aussuchen, welches dann vom Objekt "obj_bild" angezeigt werden soll.

    GML-Quellcode

    1. global.bild = get_open_filename("Unterstützte Bilddateien|*.jpg;*.png;*.gif;*.bmp", "Wähle dein erstes Bild aus.")
    2. global.bildText = global.bild //zum Speichern des Dateipfads
    3. global.bild = sprite_add(global.bild, 1, false, false, room_width/2, room_height/2)
    4. obj_bild.sprite_index = global.bild


    Soweit, so gut, bis hier hin klappt alles. Nun will ich per Taste das Bild in ein anderes verwandeln.
    Abhängig davon, welches Bild gerade angezeigt wird, soll dieses Bild durch ein bestimmtes ersetzt werden.

    GML-Quellcode

    1. if (keyboard_check_pressed(vk_space))
    2. {
    3. switch(global.bildText)
    4. {
    5. case „C:\Mein\Datei\Pfad\Beispiel.png“:
    6. neuesBild = sprite_add("C:\Mein\Datei\Pfad\Beispiel_2.png", 1, false, false, room_width/2, room_height/2)
    7. obj_bild.sprite_index = neuesBild
    8. show_message(„Das Bild war 'Beispiel' und ist nun 'Beispiel 2' !“)
    9. default:
    10. show_message(„Das Bild war nicht 'Beispiel'“)
    11. }
    12. }
    Alles anzeigen


    Eigentlich funktioniert das ja auch.
    Zumindest wird das Bild 'Beispiel.png' im switch-statement erkannt und ich bekomme die Nachricht „Das Bild war 'Beispiel' und ist nun 'Beispiel 2' !“.

    Jedoch ändert sich der sprite_index von obj_bild nicht und er zeigt einfach gar kein Bild mehr an.
    Wenn ich nun show_message(string(neuesBild)) sage, bekomme ich „-1“ zurück.

    Wenn ich das am Anfang bei dem Bild das man selbst öffnet schreibe dann bekomme ich „16“ zurück.
    Keine Ahnung warum 16 und die Zahl ist immer gleich egal welches Bild man öffnet.

    Jedenfalls spricht die -1 ja dafür dass nun etwas anders ist und das Bild nicht gefunden wird.
    Was ich jedoch nicht so ganz verstehe, da der Dateipfad im switch-event in der selben Schreibweise (also C:\....\Bild.png) erkannt wird.

    Ich hoffe mir kann hier jemand weiterhelfen. ?(

    Dieser Beitrag wurde bereits 11 mal editiert, zuletzt von cedisupersoccer ()

  • Hi Willkommen im Forum ;)
    Ganz sicher, dass der Pfad zur Datei die du da geschrieben hast stimmt? Deswegen ist das sprite auch auf jeden Fall -1 :)
    die 16 kommt daher, dass das erste Sprite im Ressource Tree den du im GM siehst den Index 0 hat. Das zweite Sprite, 1 usw. (Du hast also 16 Sprites in deinem Projekt :P )
    Eine andere Sache die zu dem Fehler führt, könnte sein, dass du GameMaker Studio benutzt. Da kannst du nämlich nur, wenn nicht anders ausgewählt die Dateien im Ordner + Unterordner %localappdata%\ProjektName ändern,einlesen usw.
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Husi012 schrieb:

    Hi Willkommen im Forum ;)
    Ganz sicher, dass der Pfad zur Datei die du da geschrieben hast stimmt? Deswegen ist das sprite auch auf jeden Fall -1 :)
    die 16 kommt daher, dass das erste Sprite im Ressource Tree den du im GM siehst den Index 0 hat. Das zweite Sprite, 1 usw. (Du hast also 16 Sprites in deinem Projekt :P )
    Eine andere Sache die zu dem Fehler führt, könnte sein, dass du GameMaker Studio benutzt. Da kannst du nämlich nur, wenn nicht anders ausgewählt die Dateien im Ordner + Unterordner %localappdata%\ProjektName ändern,einlesen usw.


    ​Hallo, ja ich benutze GameMaker Studio. Und ja dass das Bild nicht in %localappdata%\ProjektName lag war das Problem, vielen Dank :thumbsup: