Windowed / FullScreen per Button

  • GM 6

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

  • Windowed / FullScreen per Button

    Vorab bitte ich um Vergebung für derart viel Text bei einem wohl relativ kleinen Problem. ^^

    Mein Spiel startet mit Fullscreen / Keep aspect Ratio.

    Ich habe im Hauptmenu einen Button, mit dem ich zum windowed mode wechseln kann.

    Der Button hat zwei Images, An und Aus (benannt Mit und Ohne).

    Die Info sieht also so aus:

    Information about object: but_WIN

    Sprite: WIN_ohne
    Solid: false
    Visible: true
    Depth: 0
    Persistent: false
    Parent: <no parent>
    Mask: <same as sprite>

    Create Event:
    set variable fullscreen to 1

    Mouse Event for Left Released:
    execute code:

    if (fullscreen=0)
    {window_set_fullscreen(true)
    fullscreen=1}
    else
    {window_set_fullscreen(false)
    fullscreen=0}

    Mouse Event for Mouse Enter:
    set the sprite to WIN_mit with subimage 0 and speed 1
    play sound click; looping: false

    Mouse Event for Mouse Leave:
    set the sprite to WIN_ohne with subimage 0 and speed 1

    =======================================================

    Wenn ich darauf klicke, wechselt das Spiel in den Fenstermodus.
    Klicke ich noch mal drauf, geht es wieder Full screen. Soweit, so gut.

    Ich möchte aber nun, wenn das Spiel im Fenstermodus ist, anstelle des “windowed“ – Button einen
    „Full screen“ – Button zeigen. Wie mache ich das bitte?


    Ich habe es bislang so gemacht, dass ich den „Windowed“ – Button dupliziert habe und als einzige Änderung zwei neue Images zugewiesen, sonst blieb alles gleich.

    Im Mouse Event for Left Released des “windowed” – Buttons soll dieser jetzt per “Create Instance – applies to other” oder “Change Instance” den “Full Screen” – Button anzeigen, aber genau dass funktioniert eben nicht. Er geht zwar in den Fenstermodus, zeigt aber den „Full Screen“ nicht an und bei nochmaligem Klicken flackert das Bild.

    Was bitte, mache ich falsch?

    Eine weitere Frage, bitte: Bedeutet „window_set_fullscreen(true)“ auch,
    dass die Funktion „keep aspect ratio“ beibehalten wird?

    Vielen Dank im Voraus für diejenigen, die sich meines Problems annehmen. ^^

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

  • Mach einfach, wenn du vom full zum win wechselt,


    [ aplies to ]
    ocject: obj_full-zu-win

    [change into]
    object: obj_win-zu-full

    [perform events]
    perform events: yes

    oder, wenn du ein obj mit einem sprite und 2 subimages besitzt,
    wenn du vom full zum win wechselt,


    [ aplies to ]
    self

    [ sprite ]
    sprite: spr_full/win

    [ subimages ]
    subimages: 1

    [ speed]
    speed: 0

    und eben das gleiche, wenn man von win zu full wechselt
  • Vielen Dank für Deine Antwort.

    Leider funktioniert es immer noch nicht, obwohl ich beide Versionen nachgebaut habe.

    Ich habe jetzt mal die relevanten Bestandteile in eine Extra-Datei gepackt und hochgeladen.

    Vielleicht könntest Du oder sonst jemand, der sich dazu berufen fühlt, bitte mal einen Blick drauf werfen. Danke im Voraus.

    Hier der Link zur ca. 43 kb kleinen Datei: Download

    Weiterhin bleibt noch die Frage, ob „window_set_fullscreen(true)“ auch bedeutet, dass die
    Funktion „keep aspect ratio“ beibehalten wird.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Werx ()

  • Warum hast du zwei Buttons? Es würde doch einer reichen. Ich schreib dir mal einen einfachen GML-Code fürs Mouse-pressed-event:

    GML-Quellcode

    1. if (window_get_fullscreen())
    2. {
    3. window_set_fullscreen(false)
    4. sprite_index=spr_windowed
    5. }
    6. else
    7. {
    8. window_set_fullscreen(true)
    9. sprite_index=spr_fullscreen
    10. }


    Die Spritenamen müssen noch angepasst werden.

    © 2008 by Teamgrill Productions
  • Es ist überhaupt nicht nötig, eine eigene Variable dafür zu erstellen. Wie gesagt, die einzigen Funktionen, die du brauchst sind:

    GML-Quellcode

    1. window_get_fullscreen()
    2. window_set_fullscreen()

    © 2008 by Teamgrill Productions
  • MasterXY schrieb:

    Warum hast du zwei Buttons? Es würde doch einer reichen. Ich schreib dir mal einen einfachen GML-Code fürs Mouse-pressed-event:

    GML-Quellcode

    1. if (window_get_fullscreen())
    2. {
    3. window_set_fullscreen(false)
    4. sprite_index=spr_windowed
    5. }
    6. else
    7. {
    8. window_set_fullscreen(true)
    9. sprite_index=spr_fullscreen
    10. }


    Die Spritenamen müssen noch angepasst werden.
    Dass funzt jetzt schon mal wunschgemäß, Dankeschön.

    Hier bei Bedarf der neue Download .

    Jetzt müssten wir "nur" noch hinbekommen, dass die Buttons die "AN" und "Aus" - Zustände korrekt anzeigen,
    da ich das bei allen Buttons im Menu so machen möchte, und es eben einheitlich ausschauen sollte,
    also ein "Hover" - Effekt für jeden Button.

    Den habe ich bei den anderen Buttons eben per "Mouse enter / leave" und "Change sprite" gemacht,
    daher auch zwei Bilder pro Button.

    Gibt es eine Möglichkeit dieses mit dem oben zitierten Script für den Fenstermoduswechsel zu kombinieren?

    Wenn ja, kann ich das Thema auf erledigt setzen. ;)
  • So ich hab es dir jetzt mal gemacht, ich hab die Objektanzahl mal auf 1 objekt verringert und die spriteanzahl auf 2. Im Code ist alles kommentiert.
    Dateien

    © 2008 by Teamgrill Productions
  • Dankeschön.

    Habe es jetzt ins eigentliche Spiel implementiert und es funzt perfekt.

    Durch die Kommentare lässt sich das Ganze auch sehr gut nachvollziehen.

    Dieses Engagement zieht natürlich einen Eintrag in die Credits nach sich. ;)

    Thema erledigt.