Android: Multiple Screen Auflösungen, verständnisproblem

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

  • Android: Multiple Screen Auflösungen, verständnisproblem

    Hallo, nach einigen Suchen und Kopfzerbechen habe ich erstmal ein nettes Script gefunden das mir im ersten Augenblick weiter geholfen hat
    aber anscheinend nicht richtig funktioniert, bzw. ich vieleicht einen Denkfehler mache.
    Zu erstmal,
    ich habe hier ein Objekt in dem steht unter
    Create:

    GML-Quellcode

    1. // Bildschirmauflösung einlesen und den Variablen übergeben
    2. pre_ww = window_get_width(); // Breite
    3. pre_wh = window_get_height();// Höhe


    In Step:

    GML-Quellcode

    1. // Aufrufen der Function
    2. scrViewResize();


    und hier die Function/Script selber das die Auflösung anpasst, sowohl auf Landscape und Portrait Format.

    GML-Quellcode

    1. // check the window height and initialise variables, Bildschirm neu einlesen
    2. var ww = window_get_width();
    3. var wh = window_get_height();
    4. var wError = 0;
    5. // ist die fensterbreite kleiner 192 Pixel, auf 192 pix einstellen.
    6. //script know that an error has occurred
    7. if (ww<192) {
    8. ww = 192;
    9. window_set_size(192,wh);
    10. pre_ww = ww;
    11. wError = 1;
    12. }
    13. // das gleich für die höhe, hier 32 Pixel.
    14. if (wh<32) {
    15. wh = 32;
    16. window_set_size(ww,32);
    17. pre_wh = wh;
    18. wError = 1;
    19. }
    20. // if no errors have occurred, continue, wenn kein Error
    21. if !(wError==1) {
    22. // check if the window size has actually changed since the last step
    23. if !(pre_ww==ww) or !(pre_wh==wh) {
    24. // check in which direction the screen is bigger (important for devices you can turn around, like surface tablets)
    25. if (ww>=wh) {
    26. // resize the views, their ports, the application surface and the GUI
    27. var ar = wh/ww;
    28. var new_ww = min(ww,1920);
    29. var new_wh = round(new_ww*ar);
    30. view_wview[0]=new_ww;
    31. view_wport[0]=new_ww;
    32. view_hview[0]=new_wh;
    33. view_hport[0]=new_wh;
    34. if (application_surface_is_enabled()) {
    35. surface_resize(application_surface,new_ww,new_wh);
    36. }
    37. display_set_gui_maximise();
    38. // reset the values to check whether the window has changed next step
    39. pre_ww = ww;
    40. pre_wh = wh;
    41. } else {
    42. // resize the views, their ports, the application surface and the GUI
    43. var ar = ww/wh;
    44. var new_wh = min(1920,wh);
    45. var new_ww = round(new_wh*ar);
    46. view_wview[0]=new_ww;
    47. view_wport[0]=new_ww;
    48. view_hview[0]=new_wh;
    49. view_hport[0]=new_wh;
    50. if (application_surface_is_enabled()) {
    51. surface_resize(application_surface,new_ww,new_wh);
    52. }
    53. display_set_gui_maximise();
    54. // reset the values to check whether the window has changed next step
    55. pre_ww = ww;
    56. pre_wh = wh;
    57. }
    58. }
    59. }
    Alles anzeigen


    Soweit so gut.
    Die Room eigenschaften:
    Roomgrösse = 1984 * 1984
    wview = 1024
    wport = 1024
    hview = 768
    hport = 768

    // mit dem h/wview da komm ich klar, aber für was soll w/hport gut sein?

    Dieses Objekt habe ich im Room mitplaziert.
    Wenn ich dem Compilieren das Spiel starte, sind die Sprites zwar alle super, aber hier habe ich Schwarze Balken an den seiten, sprich, der Room wird mit 1024 * 768 angezeigt.
    Drehe ich nun das Handy von Landscape auf Portrait wird es korekt mit 720 * 1280 angezeigt.
    Drehe ich das ganze wieder zurück auf Landscape sind die Balken weg und es läuft wie es sollte mit 1280 * 720 pixel.

    Wie kann ich hier verhindern das es erst mit den Room einestellungen startet und nicht mit der Auflösung des Handys ( Darf man Handy überhaubt noch sagen oder ist Smartphone besser?)

    Hier noch ein kleines Video wo es veranschaulicht.

    youtu.be/wq-uARny380


    Schmal vielen Dank :)
  • Mit dem Handy kenn ich mich zwar nicht so gut aus, aber w/hport ist dazu dar, um zu sagen wo der View angezeigt wird. Normalerweise über den ganzen Bildschirm. Es gibt aber auch die Möglichkeit, z.B. Unten in der Ecke die ganze Map anzuzeigen. das kann man dann mit view_w/hport machen.
    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
  • So, mit der "komischen" Anzeige/screenauflösung beim Start, kommen ich immer noch nicht klar.

    Ich dachte mir das ich hier vieleicht mit einem Start_Room eine zwangs orientation] machen könnte,
    stehts beim start im Portait dann mache Landscape oder eben andersherum und erst danach das "normale" Level/room anzeigen.

    Aber jetzt hackt es schon wieder :(

    Mit display_get_orientation() kann ich die orientation auslesen und anzeigen lassen, 0-3, das funktioniert auch,
    nur wie setze ich das Display auf die gewünschte richtung.

    Meine gedanke war eigentlich das es vieleicht ein display_set_orientation(0..3) gibt. Aber leider nichts.
    Ich such warscheinlich nur nach der falschen Funktion.
  • Hallo Atomicmaster,
    ja die einstellungen haben ich schon gesehen und nutze sie auch.
    Das Problem ist eben gerade mit diesen einstellungen.
    Nutze ich,
    nur landscape = Spiel startet mit den Schwarzenbalken
    nur Portrait = Spiel startet mit den Schwarzenbalken

    Portrait und Landscape =
    Startet das Spiel mit Aufrechten Handy, gehts direkt in den Portraitmodus, aber mit den schwarzenbalken, drehe ich das Handy, gehts in den Landscapemodus, aber nun Bildschirmfüllend, wie es sein sollte.
    Genauso andersherum, wird das spiel neu gestartet und das Handy liegt "längs", geht in den Landscapemodus mit den Balken, drehen und das Portrait wird richtig dargestellt, zurück drehen und Landscape
    funktioniert auch richtig.

    Es muss immer zuerst ein Wechsel Landscape <-> Portrait bei mir stattfinden. ????
  • Das kommt davon, wenn man den Thread nur kurz überfliegt und meint, den "Fehler" zu wissen :)
    Hmm habe mit Android etc noch nicht viel programmiert. Hoffe jemand weiss aber eine "Richtige" Antwort zu deinem Problem :)

    Eventüdel hilft dir der Thread weiter: gmc.yoyogames.com/index.php?showtopic=565614