sprite_draw im draw-event löscht vorherige sprites nicht

  • GM 8

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

  • sprite_draw im draw-event löscht vorherige sprites nicht

    Hallo,
    ich nutze folgenden Code im draw-Event, um mein Interface auszurichten:

    GML-Quellcode

    1. if ((global.charWindowOn == 1) || (leftPressed == 1))
    2. {
    3. draw_sprite(spr_I_CharMenue_Oeffnen_03, -1, view_xview, view_yview);
    4. }
    5. else if (mouseOver == 1)
    6. {
    7. draw_sprite(spr_I_CharMenue_Oeffnen_02, -1, view_xview, view_yview);
    8. }
    9. else
    10. {
    11. draw_sprite(spr_I_CharMenue_Oeffnen_01, -1, view_xview, view_yview);
    12. }
    Alles anzeigen


    Das funktioniert auch soweit: Wenn ich meinen Charakter bewege, dann bewegen sich meine Interface-Grafiken sauber und ohne Verzögerung mit.


    Nun wollte ich ein (eigenes) Drag-and-Drop-System für meine Items einbauen, doch nun tut sich ein kleines Problem auf, im draw-Event eines Item-Objekts steht nun folgendes:

    GML-Quellcode

    1. if (mouse_check_button(mb_left))
    2. {
    3. draw_sprite(spr_Icon_Helm_01, 0, view_xview + relMX, view_yview + relMY);
    4. }
    5. else
    6. {
    7. draw_sprite(spr_Icon_Helm_01, 0, self.x, self.y);
    8. }


    Wenn ich allerdings das Item nun über den Bildschirm "ziehe", dann erstellt er ganz viele Sprites, immer an den Positionen an denen ich mit meiner Maus gewesen bin. Lasse ich die Maustaste los, "springt" der Sprite an die alte Stelle zurück und alle anderen Sprites verschwinden. Drücke ich nun erneut die Maustaste, erscheinen wieder alle bereits gezeichneten Sprites.

    Wo liegt der Unterschied in der Mechanik der beiden Codes?

    Grüße
    naibaf77
    True story!
  • Sag mal, was relMX und relMY für Werte haben.
    Btw, lass das self weg, das macht deinen Code nur unleserlicher.

    Edit: Wird bei deinen Mouse-Events auch Code ausgeführt?

    Albert Einstein schrieb:

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

    1. if (mousePositionSaved == 0)
    2. {
    3. relMX = mouse_x - 16 - view_xview;
    4. relMY = mouse_y - 16 - view_yview;
    5. mousePositionSaved = 1;
    6. }


    Es geht darum, dass der Sprite dann genau in der Mitte des Mauszeigers ist. Das klappt auch.

    Mein Objekt, indem das draw so komisch reagiert, hat nebendessen noch ein step-event in dem der obige code steht und ein create-event indem einige variablen gesetzt werden.
    True story!
  • Ah sorry, es haben sich gleich 2 Logikfehler auf einmal eingeschlichen, sodass es aussah als würde es "fast" klappen. Jetzt habe ich einen behoben, dadurch wird aber auch der andere Fehler deutlich.
    Ich muss jetzt erstmal ne Menge umschreiben :D Ich meld mich nochmal, falls dabei Schwierigkeiten auftreten .. Sorry!
    True story!
  • Okay, passt nicht ganz zum Topic, aber ne kleine Frage hab ich gerade:

    Ich habe ein parent-Objekt mit Create-Event in dem ein paar Variablen gesetzt werden.
    DIese sollen für alle Unterobjekte gleich sein, so weit so gut, meine Unterobjekte brauchen nun kein Create-Event mehr.
    Nun gibt es aber allerdings doch eine Sache, die jedes Unterobjekt, genau beim "create" tun sollen, sie sollen nämlich einen eigenen, speziellen Wert in ein globales Array schreiben. Dies kann ich nun leider nicht mehr im Create-Event machen, da das Create-Event sonst überschrieben wird.

    Wie komme ich aus dem Dilemma?

    Gruß
    naibaf77
    True story!