Zoom in/out

  • Android

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

  • Hallo alle zusammen,

    ich war eben auf der englischen GMC und habe mir da ein Code kopiert. Dieser ermöglicht das hinein+hinaus-zoomen.
    Soweit funktioniert das auch sehr gut, jedoch würde ich dem "Zoom" gerne eine Grenze setzen,
    sodass man nicht ewig weit die Sicht verkleinern kann.
    Create Event:

    GML-Quellcode

    1. initial_w_view = view_wview[0];
    2. view_scale = 1;
    3. initial_x = 0;
    4. initial_y = 0;
    5. initial_zoom = 0;


    Global Mouse Left Button:

    GML-Quellcode

    1. var view_ratio;
    2. view_ratio = view_hview[0]/view_wview[0];
    3. if( device_mouse_check_button_pressed( 1, mb_left ) )
    4. {
    5. initial_x = mean( device_mouse_x( 0 ), device_mouse_x( 1 ) );
    6. initial_y = mean( device_mouse_y( 0 ), device_mouse_y( 1 ) );
    7. initial_zoom =
    8. point_distance
    9. (
    10. device_mouse_raw_x( 0 ), device_mouse_raw_y( 0 ),
    11. device_mouse_raw_x( 1 ), device_mouse_raw_y( 1 )
    12. )*view_scale;
    13. };
    14. if( device_mouse_check_button( 1, mb_left ) )
    15. {
    16. view_scale = initial_zoom/
    17. point_distance
    18. (
    19. device_mouse_raw_x( 0 ), device_mouse_raw_y( 0 ),
    20. device_mouse_raw_x( 1 ), device_mouse_raw_y( 1 )
    21. );
    22. view_wview[0] = initial_w_view*view_scale;
    23. view_hview[0] = view_wview[0]*view_ratio;
    24. view_xview[0] += initial_x-mean( device_mouse_x( 0 ), device_mouse_x( 1 ) );
    25. view_yview[0] += initial_y-mean( device_mouse_y( 0 ), device_mouse_y( 1 ) );
    26. };
    Alles anzeigen



    "Mark Overmars" hat in folgendem Thread den Code etwas verfeinert, doch die editierte Version ist nicht mehr auffindbar.
    Thread<-

  • Ok, das bringt mit folgenden Fehler.

    FATAL ERROR in
    action number 1
    of Create Event
    for object obj_zoom:
    -----------------
    VMError!! Occurred - Push :: Execution Error - Variable Get -6.view_scale(100020, 0)
    at gml_Object_obj_zoom_Create_0 (line 4) - view_scale = clamp(view_scale, 1, 2);
    -----------------
    Self Variables :
    initial_w_view(100019) = 854
  • Da das bei mir durch die Maustaste bzw. das berühren des Touchscreens ausgelöst wird, habe ich es da reingepackt.
    Es funktioniert aber nicht wirklich gut. Jetzt ist die Zoom Funktion eher gestört als das sie limitiert wird.
    Habe mal im Anhang das Projekt. Kann sich das jemand mal ansehen was da schief läuft?
    Dateien
    • Project3.zip

      (540,48 kB, 239 mal heruntergeladen, zuletzt: )
  • Benutzer online 1

    1 Besucher