Instancen Löschen/ändern

  • GM 8

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

  • Instancen Löschen/ändern

    Hallo

    GML-Quellcode

    1. if global.t=0
    2. {
    3. instance_create(100,242,Button_2)
    4. instance_create(100,290,Button)
    5. instance_create(100,338,Button)
    6. instance_create(100,386,Button)
    7. }
    8. if global.t=1
    9. {
    10. instance_create(100,242,Button)
    11. instance_create(100,290,Button)
    12. instance_create(100,338,Button_2)
    13. instance_create(100,386,Button)
    14. }
    15. if global.t=2
    16. {
    17. instance_create(100,242,Button)
    18. instance_create(100,290,Button)
    19. instance_create(100,338,Button_2)
    20. instance_create(100,386,Button)
    21. }
    22. if global.t=3
    23. {
    24. instance_create(100,242,Button)
    25. instance_create(100,290,Button)
    26. instance_create(100,338,Button)
    27. instance_create(100,386,Button_2)
    28. }
    Alles anzeigen


    Es werden Buttons erstelt aber die vorherigen nicht gelöscht wie kann man das machen ?
    Meine Webseite: jesoftmedia.de
  • with (Button)
    {
    instance_destroy();
    }
    with (Button_2)
    {
    instance_destroy();
    }


    Dieser code macht nicht das was ich mir vorstelle denn er löscht alle Buttons aber die Buttons sollen erst nach einander gelöscht werden also erst werden sie erstellt dann verändert sich die variable und es werden neue erstellt und die alten gelöscht.


    Oder habt ihr eine bessere Idee ich habe zwei Buttons einer ist Blau einer Rot beim Roten passiert was beim Blauen nicht insgesamt gibt es immer 3 Blaue und einen Roten welche nicht immer auf derselben Position ist also das einer der Blauen denn Platz mit einen Roten tauscht.
    Meine Webseite: jesoftmedia.de

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Max77771 ()

  • Wie gesagt was genau versuchst du zu machen?
    Du hast 4 Knöpfe, und bei irgendeinem Event willst du diese Knöpfe neu anordnen, oder?
    Ändere doch einfach die Position der Buttons untereinander.
    Wichtig scheint ja nur die Position von Button_2 zu sein.

    zu meinem Beispiel:
    Wenn du zuerst löscht und danach neu erstellst, sollte es doch funktionieren, oder nicht?
  • Ich würde die Buttons erstmal in ein array packen.

    im create event:

    GML-Quellcode

    1. button_array[0] = instance_create(100,242,Button_2);
    2. button_array[1] = instance_create(100,290,Button);
    3. button_array[2] = instance_create(100,338,Button);
    4. button_array[3] = instance_create(100,386,Button):


    Dann in deinem Button-Tausch Event: Da sich x nicht ändert habe ich x-weggelassen

    GML-Quellcode

    1. if global.t=0
    2. {
    3. button_array[0].y = 242;
    4. button_array[1].y = 292;
    5. button_array[2].y = 338;
    6. button_array[3].y = 386;
    7. }
    8. if global.t=1
    9. {
    10. button_array[0].y = 292;
    11. button_array[1].y = 242;
    12. button_array[2].y = 338;
    13. button_array[3].y = 386;
    14. }
    15. if global.t=2
    16. {
    17. button_array[0].y = 338;
    18. button_array[1].y = 292;
    19. button_array[2].y = 242;
    20. button_array[3].y = 386;
    21. }
    22. if global.t=3
    23. {
    24. button_array[0].y = 386;
    25. button_array[1].y = 292;
    26. button_array[2].y = 338;
    27. button_array[3].y = 224;
    28. }
    Alles anzeigen
  • Du darfst das drück-event immer nur einmal zulassen.

    GML-Quellcode

    1. if (mouse_check_button_pressed(mb_left) == true)

    An sonsten kommt der Effekt ja solange wie du den Knopf gedrückt hältst und dann springt er da ständig durch die events.

    Alternativ anstatt des drück-event das loslass-event verwenden.

    Ich hoffe das es daran liegt, falls nicht dann ist es wohl besser wenn du ein Beispiel Programm hier hochlädst.
  • Ich glaube ich habe da mehrere Probleme/Fehler denn Ich habe eine Maus Over Abfrage (Mouse Enter und Maus Leave) und Eine Left press Abfrage.

    Ein Fehler ist Aufjedenfall das, wenn man denn Button drückt, bleibt die Maus meistens genau auf der Position, wo gedrückt wurde und der Mausover Effekt wird angezeigt dies Soll so aber nicht sein der Maus over Effekt soll nach dem Drücken erst wieder funktionieren, wenn man mit der Maus denn Button verläst und wieder draufgeht.

    PS.

    GML-Quellcode

    1. if (mouse_check_button_pressed(mb_left) == true)
    in welchem Event, Lang nicht mehr mit dem gm gearbeitet.
    Meine Webseite: jesoftmedia.de
  • Puh das klingt kompliziert.
    Der MouseOver Effekt soll also nur funktionieren solange nicht auch die Maus gedrückt wurde?

    Dann würde ich mir pro Button eine Statusvariablen bauen.
    im create event:

    GML-Quellcode

    1. b_mouse_over_effect_allowed = true;


    Immer wenn dann MouseEnter aktiviert wird, musst du auch diese Variable prüfen ob sie true ist.
    Und nur dann den Effekt erlauben.

    Im Mausklick Event musst du dann b_mouse_over_effect_allowed auf false setzen.
    Im MouseLeave Event musst du b_mouse_over_effect_allowed zurück auf true setzen.
    Jetzt müsste das so funktionieren.

    Warum deine Maus an der Stelle sehen bleibt weiss ich leider nicht.
  • Die Sache mit Variablen zu Lösen scheint zu funktionieren allerdings habe ich noch einen schönheitsfehler bis jetzt wird das sprite durch denn D&D Befehl change sprite geändert ich möchte aber das dies in gml passier.

    GML-Quellcode

    1. an=1
    2. {
    3. image_index = Button_3;
    4. image_index=0;
    5. image_speed=1;
    6. }


    Dieser code funktioniert aber nicht was ist falsch?
    Meine Webseite: jesoftmedia.de
  • versuch es mal mit dem Befehl:

    GML-Quellcode

    1. draw_sprite(sprite_index,image_index,x,y);


    Die Parameter musst du natürlich ergänzen:

    sprite_index = ein einfach sprite zb. spr_block
    image_index muss dir klar sein und x und y auch

    du kannst image_index auch mit -1 ersetzen wenn es unabhängig sein soll welches Image gedrawt werden soll.
    Beachte dabei den Befehl im draw_event zu starten ;) hoffe ich konnte helfen :D