animation end code mit externen Ressourcen, die noch nicht geladen sind

  • GM 8

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

  • animation end code mit externen Ressourcen, die noch nicht geladen sind

    Hallo,
    Ich habe ein object, welches ein externes Sprite laden soll.
    Das laden des Sprites funktioniert soweit.
    Wenn das Sprite zu ende ist -animation end- soll das object zerstört werden.
    Allerdings weiß ich nicht was ich in den animation end event schreiben soll, weil ich das sprite ja nicht im index habe.
    Kennt jemand die Methode um mit code ressourcen zu verarbeiten, die noch nicht geladen sind?

    PS: Das externe Laden der ressourcen dient ja der Speicherentlastung,
    werden also externe ressourcen von selbst wieder gelöscht, sobald sie nicht mehr verwendet werden?

    Danke!

    Gruß,

    -Kevin
    Ware wa messiah nari! Hahaha
  • Wenn du ein Sprite laedst, dann solltest du den neuen sprite_index einer Variablen zuordnen. Also

    GML-Quellcode

    1. globalvar loaded_sprite;
    2. loaded_sprite = sprite_add_sprite("sprite_name.gmspr");


    derkevevin schrieb:

    werden also externe ressourcen von selbst wieder gelöscht, sobald sie nicht mehr verwendet werden?

    Nein, deine galadenen Resourcen musst du selbstaendig wieder loeschen mit sprite_delete(loaded_sprite). Analog bei Backgrounds und Sounds.

    Albert Einstein schrieb:

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
  • OK hat prima funktioniert, Danke :D

    Kannst du mir noch sagen, ob ich die externen Sprites irgendwie in den Index aufnehmen kann?
    Also so, dass wenn ich z.B. sprite_index=global. eingebe die Vorschläge kommen.
    Oder bei sprite_index=global.spr_
    Geht das irgendwie, vielleicht mit einer .INI Datei oder Room creation code wo die alle drinn stehen?
    Ware wa messiah nari! Hahaha
  • Solch eine Funktion hat der GM leider nicht. Ist halt kein Eclipse, Netbeans oder MS Visual Studio.
    Ich haette allerdings 3 Moeglichkeiten als Vorschlag.
    [hide=1.]Du koenntest, ist dir Konstanten zu definieren, die den selben Namen haben wie deine globalen Variablen haben.
    Den Konstanten kannst du dann einen beliebigen Wert zuweisen. Wenn du dann die ersten zwei Buchstaben deiner Konstanten geschrieben hast, dann solltest du auch eine Liste bekommen.
    Allerdings weiss ich nicht ob der GM meckert, wenn du einer Konstanten einen neuen Wert zuweisen willst.
    Wahrscheinlich wird er dir einen Kompilierfehler anzeigen, weil du einem Wert einen anderen Wert zuweisen willst, was ja nicht geht.
    Du muesstest also, bevor du das Spiel startest, deine Konstanten wieder alle loeschen. Konstanten kann man in einer Text-Datei abspeichern und laden lassen, aber der Aufwand waere trotzdem zu hoch (meiner Meinung nach).[/hide]
    [hide=2.]Einfach eine Konvention fuer die Benennung deiner Variablen ueberlegen. Dann musst du dir nicht mehr alle Namen merken, allerdings die Konvention konsequent beibehalten. Z.B.:

    GML-Quellcode

    1. //Load player sprites
    2. global.spr_player_idle = sprite_add_sprite("sprites/player/idle.gmspr");
    3. global.spr_player_run = sprite_add_sprite("sprites/player/run.gmspr");
    4. global.spr_player_jump = sprite_add_sprite("sprites/player/jump.gmspr");
    5. global.spr_player_shoot = sprite_add_sprite("sprites/player/shoot.gmspr");
    6. //Load monster sprites
    7. global.spr_monster_idle = sprite_add_sprite("sprites/monster/idle.gmspr");
    8. global.spr_monster_walk = sprite_add_sprite("sprites/monster/walk.gmspr");
    9. global.spr_monster_attack = sprite_add_sprite("sprites/monster/attack.gmspr");
    10. global.spr_monster_die = sprite_add_sprite("sprites/monster/die.gmspr");
    Alles anzeigen
    [/hide]
    [hide=3.]
    Du laedst deine Sprites ordnerweise und packst die Indizes der geladenen Sprites in eine Map. Die Abbildung in der Map koenntest du dann von String (oder Konstantenname) auf Index machen. Dann haettest du pro Objekt eine Map, auf die du zugreifen kannst und einfach den richtigen Sprite per String (oder Konstantenname) ausliest. Z.B. suchst du dir aus dem Ordner "sprites/player/" alle Dateien mit der Endung ".gmspr" und laedst dir die Indizes der ganzen Game Maker sprites in eine erstellte ds_map. Dann koenntest du mit ds_map_find_value(map_index,"sprite_name"); das richtige Sprite aussuchen.
    [/hide]

    Albert Einstein schrieb:

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.