Screen mit Surface Freezen?

  • Allgemein

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

  • Screen mit Surface Freezen?

    Hey, ich habe ein Problem. ^^

    ich will mein Spiel pausieren, dafür benutze ich instance_deactivate. Damit jetzt aber die Objekte nicht verschwinden, sollen sie an ihrem derzeitigen Punkt weiterhin gezeichnet werden. Ich wollte das mit einem Surface lösen, bekomme es aber nicht gebacken. :/

    Wenn Pause aktiviert ist, ist global.pause 1 wenn nicht, 0.

    Weiß jemand wie ich mit einem Surface sozusagen ein Bild machen kann, welches angezeit wird?
    Husi012 hat mich nicht mehr in seiner Signatur, ich bin trotzdem noch fame.
  • du kannst doch einfach save_screen machen und das dann in einem sprite einfügen
    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
  • Ich weiß net, ob die Funktion in Studio existiert, aber:
    Spoiler anzeigen
    sprite_create_from_screen(x,y,w,h,precise,transparent,smooth,preload,xorig,yorig) Erstellt ein Sprite von der angegebenen Bildfläche. Dies macht es möglich, ein beliebiges Sprite zu erstellen. Zeichne mit den Zeichenfunktionen ein Bild auf dem Bildschirm und mache dann ein Sprite davon. (Wenn du es nicht im Draw Event machst wird dies sogar nicht auf dem Bildschirm angezeigt.) Die anderen Parameter sind wie oben. Die Funktion gibt den Index des neuen Sprites wider. Vorsicht ist hier geboten. Auch wenn wir hier über den Bildschirm reden, ist es die Zeichenregion die zählt. Das dort möglicherweise ein Fenster ist und dies skaliert wird wird nicht beachtet.


    LG
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.
  • @Husi12:

    Habe das nun scho öfter gelesen mit dem screen_save für pause etc. Benutze es in meinem Spiel auch um das zuletzt gespeicherte Spiel anzuzeigen.
    Was ich aber auch gemerkt habe das diese Funktion nicht richtig funktioniert, wenn man surfaces im Level benutzt. Diese werden nämlich nicht mit
    gespeichert beim Screenshot. Das lässt den Screenshot dann dementsprechend schlecht aussehen :)

    Siehe beispiele im anhang.

    Bild1: So solte es aussehen.
    Bild2: So nimmt screen_save die selbe Szene auf.
    Bilder
    • test1.png

      378,95 kB, 800×600, 373 mal angesehen
    • test2.png

      180,06 kB, 800×600, 377 mal angesehen
  • Das ist ziemlich seltsam.

    Aber wieso überprüfst du einfach nicht in jedem Code, ob global.pause == true ist. Und nur dann kann er sich bewegen/fallen/angreifen/etc... Und du erstellst dann dein Menü. So würd ich das jetzt machen.

    P.S.: Hast du sprite_create_from_screen(...) versucht?

    MfG
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.
  • In GM:Studio kannst du application_surface und surface_copy nutzen um den Inhalt des Bildschirms auf ein extra Surface zu kopieren, dann hast du ein Screenshot auf dem Surface und kannst es dann als Hintergrund z.B. zeichnen.

    :event_create: Create Event

    GML-Quellcode

    1. // Surface erstellen
    2. gameSnapshot = surface_create(surface_get_width(application_surface), surface_get_height(application_surface));
    3. // Inhalt kopieren
    4. surface_copy(gameSnapshot, 0, 0, application_surface);


    :event_destroy: Destroy Event

    GML-Quellcode

    1. // Surface wieder entfernen
    2. surface_free(gameSnapshot);


    :event_draw: Draw Event

    GML-Quellcode

    1. draw_surface(gameSnapshot, view_xview, view_yview);
    2. draw_text(view_xview + 2, view_yview + 2, "PAUSE");


    Müsste so funktionieren, hab kein GM:Studio.
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%
  • Hey, ich habe es dann doch mit:
    screen_save_part("s_pause.png",0,0,view_wview[0]*2,view_hview[0]*2)
    screenshot = sprite_add("s_pause.png",1,0,0,0,0)
    lösen können. Trotzdem Danke für die vielen Antworten! :D
    Kann ich sicherlich noch gebrauchen. ^^
    Husi012 hat mich nicht mehr in seiner Signatur, ich bin trotzdem noch fame.