Objekte reagieren nicht auf Maus

  • GM 7

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

  • Objekte reagieren nicht auf Maus

    Hallo allerseits,

    ich habe die Suche bereits genutzt, aber leider kein gutes Ergebnis gefunden. Da bei den meisten Fragen das Objekt schon auf die Maus reagiert.
    ich habe einmal das Objekt: objQuit, es lädt einen externen Sprite der ein Beenden-Knopf ist.
    objQuit wird während der Laufzeit von objController erstellt.

    Das funktioniert alles bisher tadellos. Das Bild sprich der Knopf werden korrekt angezeigt.
    Jetzt habe ich im Event-Editor des objQuit eingestellt, das sobald der linke Mausknopf losgelassen wird, das Spiel beendet - aber es passiert nichts ?( . Auch wenn ich ein Position-Meeting mache, sodaß die Maus sich direkt über der Grafik befindet (sie ist 200x200) passiert nichts. Egal was ich für das Objekt einstelle. Es wird nichts gemacht.

    Seltsames Problem wie ich finde. Wenn ich einem Objekt ein Maus-Event zuweise und es auch während der Laufzeit sichtbar ist (sonst würde meine Grafik ja nicht angezeigt werden), so muss es doch auch auf meine Mausbefehle reagieren - weil so wird das mit meinem Spiel nichts, denn da muss ich viele Objekte mit der Maus ansprechen!? 8|

    Würde mich freuen wenn mir hier jemand bei dieser Anfängerfrage ein wenig Klarheit verschaffen könnte.

    LG
    zero-tx
    Wenns nach mir ginge bei einem meiner Projekte:

    GML-Quellcode

    1. global.ProgrammNotFinish = 1;
    2. if (global.ProgrammNotFinish)
    3. {
    4. for (i=0; i<5; i += 1)
    5. {
    6. instance_create(x + i,y + i, objzerotx + i);
    7. }
    8. objzerotx1.task = "Erstelle Grafiken";
    9. objzerotx2.task = "Erstelle Sound";
    10. objzerotx3.task = "Erstelle Effekte und Doku";
    11. objzerotx4.task = "Programmiere";
    12. objzerotx5.task = "Kümmer dich um deine Frau!!!";
    13. }
    Alles anzeigen
  • Eigendlich müsste das funktionieren!?

    Hmmm... egal ich mach das nochmal hier als Vorschlag:
    Left Released:
    entweder:

    oder

    GML-Quellcode

    1. game_end();


    Das MUSS funktionieren...
    Ansonsten hast du irgendwo etwas, dass das verhindert... Dann müsstest du uns leider ( :P ) deine gm6/gmk geben.
    Du weißt, dass du beim Loslassen immernoch mit der Maus über dem Button sein musst, oder?



    -Tobi
  • Ich konnte mir schon denken dass das funktionieren MUSS :P ... tut es aber nicht.
    Die GM6 ist nichts besonderes. Ich schreibe ein Spiel immer in Unterprogramme und füge nachher alles zusammen. Mein Programm zum laden der externen Grafiken sieht so aus:
    - Raum: rmSpielfeld
    - objLade: (befindet sich auf rmSpielfeld)
    - objBtnQuit: befindet sich nicht im Raum, ist aber sichtbar

    Im CREATE-Code von objLade steht:

    GML-Quellcode

    1. {
    2. instance_create(x,y,objBtnQuit); // habe hier auch schon feste Koordinaten angegeben ohne Erfolg!
    3. }


    Im CREATE-Code von objBtnQuit steht:

    GML-Quellcode

    1. {
    2. sprButton = sprite_add(working_directory+"/gfx/spielfeld/btnQuit.png",1,1,0,0,0,0,0);
    3. }


    Im DRAW-Event von objBtnQuit:

    GML-Quellcode

    1. {
    2. draw_sprite(sprButton,1,51,280);
    3. }


    Im MOUSE ENTER-Event von objBtnQuit:

    GML-Quellcode

    1. {
    2. // ich habe das Mouse-Enter genommen um zu testen ob er reagiert wenn die Maus über dem Objekt ist, egal welches Event für die Maus ich nehme, nix // passiert
    3. game_end();
    4. }


    Das ist definitiv alles. Mehr habe ich bislang in der gml-Datei nicht drin. Ich probiere immer alles erstmal einzeln aus, bevor ich in einem riesigen Code auf Fehlersuche gehe.

    LG
    zero-tx
    Wenns nach mir ginge bei einem meiner Projekte:

    GML-Quellcode

    1. global.ProgrammNotFinish = 1;
    2. if (global.ProgrammNotFinish)
    3. {
    4. for (i=0; i<5; i += 1)
    5. {
    6. instance_create(x + i,y + i, objzerotx + i);
    7. }
    8. objzerotx1.task = "Erstelle Grafiken";
    9. objzerotx2.task = "Erstelle Sound";
    10. objzerotx3.task = "Erstelle Effekte und Doku";
    11. objzerotx4.task = "Programmiere";
    12. objzerotx5.task = "Kümmer dich um deine Frau!!!";
    13. }
    Alles anzeigen
  • Hey copyboy,

    habe es nun so gemacht wie du sagst.
    Lasse ich das DRAW-Event weg zeichnet er den Sprite nicht, sprich er wird nicht angezeigt.
    Mache ich das DRAW-Event mit sprite_index als Sprite zeichnet er ihn.
    Das große Aber ist: Funktioniert trotzdem nicht :(
    Wenns nach mir ginge bei einem meiner Projekte:

    GML-Quellcode

    1. global.ProgrammNotFinish = 1;
    2. if (global.ProgrammNotFinish)
    3. {
    4. for (i=0; i<5; i += 1)
    5. {
    6. instance_create(x + i,y + i, objzerotx + i);
    7. }
    8. objzerotx1.task = "Erstelle Grafiken";
    9. objzerotx2.task = "Erstelle Sound";
    10. objzerotx3.task = "Erstelle Effekte und Doku";
    11. objzerotx4.task = "Programmiere";
    12. objzerotx5.task = "Kümmer dich um deine Frau!!!";
    13. }
    Alles anzeigen
  • Tatsache... Jetzt funktioniert es :huh: .
    Manchmal sind echt die kleinen Probleme die schlimmsten und schier unlösbaren!
    Ich habe es geschafft einen eigenen Mechanismus zu schreiben der eine neue ASCII-Character Map definiert die ich haben will um selbst erstelle PNG-Strips auszulesen die einen Mix aus Buchstaben und Sonderzeichen enthält, aber ein Objekt die richtige Erstellungsposition zuzuweisen - das schaffe ich nicht :pinch: urkomisch!

    Danke für die Hilfe nochmals!

    Mfg
    zero-tx
    Wenns nach mir ginge bei einem meiner Projekte:

    GML-Quellcode

    1. global.ProgrammNotFinish = 1;
    2. if (global.ProgrammNotFinish)
    3. {
    4. for (i=0; i<5; i += 1)
    5. {
    6. instance_create(x + i,y + i, objzerotx + i);
    7. }
    8. objzerotx1.task = "Erstelle Grafiken";
    9. objzerotx2.task = "Erstelle Sound";
    10. objzerotx3.task = "Erstelle Effekte und Doku";
    11. objzerotx4.task = "Programmiere";
    12. objzerotx5.task = "Kümmer dich um deine Frau!!!";
    13. }
    Alles anzeigen