tomasz_76 Opublikowano 5 Czerwca 2014 Udostępnij Opublikowano 5 Czerwca 2014 Witam ponownie Mam szybkie pytanie dotyczące "uszczypnięcia" do zoomowania w Androidzie. Zrobiłem sobie zoomowanie ekranu pod rolką w windowsie tak ze jak poruszę rolke w dół to ekran jest przybliżony a jak oddalę to ekran jest oddalany. Zoomowanie jest adekwatne do ustawionej pozycji kursora coś jak w Angry Birds ale mniejsza o to. Mam pytanko bo chciałbym zrobić to także w urządzeniach opartych na androidzie ale nie wiem jaki event zastosować?... znalazłem tylko device_get_tilt ale to jest odnośne tylko do przechyłu danego urządzenia. Może ktoś z Was zna jaki event zastosować bądź jaka instrukcja z czyta kod gdy "uszczypniecie" jest do środka i gdy "uszczypniecie" jest do środka. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 5 Czerwca 2014 Udostępnij Opublikowano 5 Czerwca 2014 Bardzo dobre zagadnięnie. Warte zrobienia tutoriala. :) Na razie podpowiem że nie ma czegoś takiego i trzeba to napisać samemu, ale są funkcje device_mouse_x() Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
tomasz_76 Opublikowano 5 Czerwca 2014 Autor Udostępnij Opublikowano 5 Czerwca 2014 no właśnie z myszką ani z rolką od niej nie działa... myślałem ze jak zrobię konwersje na Androida to jakoś samo w locie przekonwertuje kod.. Dodam że klikniecie lewej myszy działa bez problemu, natomiast prawy guzik myszy działa jeżeli klikniemy szybko ekran dwa razy... co do rolki to nie mam pojęcia Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 5 Czerwca 2014 Udostępnij Opublikowano 5 Czerwca 2014 Event prawego przycisku myszy wykonywany jest gdy wykonasz podwójne tapnięcie. Scroll myszki to nie to samo co uszczypnięcie więc nie może tak działać. Jeżeli chcesz to teraz sam spróbować napisać to podam ci zasadę działania. Sprawdź czy device_mouse_check_button(0, mb_left)= true Sprawdź czy device_mouse_check_button(1, mb_left)= true Zapisz do zmiennych device_mouse_raw_x(0), device_mouse_raw_y(0), device_mouse_raw_x(1), device_mouse_raw_y(1) Sprawdź point_distance() tych zmiennych Sprawdzaj czy point_distance(device_mouse_raw_x(0), device_mouse_raw_y(0), device_mouse_raw_x(1), device_mouse_raw_y(1)) jest mniejszy od tego zapisanego przed chwilą Porównuj czy różni się o jakiś próg tolerancji (np 100px) żeby nie wyłapywało różnicy 1px. Różnica pomiędzy dwoma point_distance() posłuży ci do dynamicznego zoomowania. uważaj na view Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
tomasz_76 Opublikowano 5 Czerwca 2014 Autor Udostępnij Opublikowano 5 Czerwca 2014 ok dziękuję za wskazówki.... zabiorę się do pracy :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Uzjel Opublikowano 5 Czerwca 2014 Udostępnij Opublikowano 5 Czerwca 2014 Kurna, po raz kolejny to piszę. Tutorial w GMS pod tytułem: Basic Isometric Tutorial. I kolejny tutorial: Pinch and Zoom Tutorial. Wszystko tam jest. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 5 Czerwca 2014 Udostępnij Opublikowano 5 Czerwca 2014 No właśnie, tak mi się zdawało że to zbyt popularny temat. :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
tomasz_76 Opublikowano 6 Czerwca 2014 Autor Udostępnij Opublikowano 6 Czerwca 2014 oj właśnie jak to mawiają że pod latarnią zawsze najciemniej :) ) ale mam pytanko skoro w podręczniku napisali :: GM-----create.......... initial_w = view_wview[0]; initial_h = view_hview[0]; v_scale = 1; v_dist = 0; GM____step........ var mx0raw, my0raw, mx1raw, my1raw; mx0raw = device_mouse_raw_x(0); my0raw = device_mouse_raw_y(0); mx1raw = device_mouse_raw_x(1); my1raw = device_mouse_raw_y(1); if device_mouse_check_button(1, mb_left) { if device_mouse_check_button_pressed(1, mb_left) { v_dist = point_distance(mx0raw, my0raw, mx1raw ,my1raw) * v_scale; } v_scale = v_dist / max(1, point_distance(mx0raw, my0raw, mx1raw, my1raw)); if v_scale < 0.5 v_scale = 0.5 else if v_scale > 1.5 v_scale = 1.5; view_wview[0] = initial_w * v_scale; view_hview[0] = initial_h * v_scale; view_xview[0] = global.Player_x - (view_wview[0] / 2); view_yview[0] = global.Player_y - (view_hview[0] / 2); } to może ktoś umie wytłumaczyć co to za zmienna global.Player_x oraz global.Player_y bo nic o niej nie wspomnieli i za bardzo nie wiem skąd ja wziąć. Pozatym reszta dobrze wytłumaczona. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 6 Czerwca 2014 Udostępnij Opublikowano 6 Czerwca 2014 Żeby zawsze kamera była wycentrowana na tej pozycji i zoom odbywał się względem środka ekranu a nie rogu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
tomasz_76 Opublikowano 6 Czerwca 2014 Autor Udostępnij Opublikowano 6 Czerwca 2014 o.k dzięki za wyjaśnienie :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się