Ta strona stosuje pliki cookies. Poczytaj co to jest w polityka cookies



Tworzenie gier 2D i 3D
Animacja 2d
Grafika 3D
Tworzenie muzyki

Kącik początkującego

Gimp Obsługa dotyku w smartfonach

     Wreszcie przechodzimy do ciekawszych zagadnień. W tym artykule ukarzemy jak stwierdzić, że ktoś dotknął ekran palcem lub urządzeniem sterującym takim jak np. rysik.

  Tak. Zaczyna się robić ciekawie. Wreszcie użytkownik naszego programu przestanie być biernym obserwatorem i będzie miał wpływ na jego przebieg. Halo smartfonie ja też mam coś do powiedzenia...

Obsługa dotyku w smartfonie

    Zróbmy więc obsługę dotyku gdziekolwiek, czyli niezależnie gdzie użytkownik dotknie ekran. By tego dokonać musimy zrozumieć czym są zdarzenia co z resztą nie jest trudne, bo jak sama nazwa wskazuje uruchamiane są wtedy, gdy nastąpi jakieś śledzone zdarzenie a może to być np. dotyk ekranu, dotyk na konkretnym obiekcie, jakaś kolizja, wstrząśnięcie smartfonem, czy dźwięk audio się skończył itd. Więcej na temat innych zdarzeń postaram się napisać w kolejnym artykule, teraz pozostańmy przy obsłudze dotyku. Zatem do dzieła!

Nasze zadanie to: wyłapać każdy dotyk ekranu i o tym poinformować w konsoli.

function  odczyt(event)
  print (
event.name
)
end

Runtime
:addEventListener("touch", odczyt)


Na tapetę bierzemy najpierw addEventListener("touch", odczyt) - co to oznacza? Otóż:

  • addEventListener - oznacza, mówiąc obrazowo, że tworzymy "szpiega", który omija wszystko a skupia się tylko i wyłącznie na wyłapywaniu zdarzenia, które nazywa się "touch", czyli po polsku dotyk ekranu. Oczywiście może on skupiać się na innych zdarzeniach, których jest sporo i znaleźć je można w specyfikacji Corona SDK.
  • drugi parametr - odczyt oznacza to, że w nasz szpieg wykryje zdarzenie to natychmiast uruchamia funkcję o nazwie odczyt, którą musimy utworzyć samodzielnie
  •  gdy użyjemy parametru Runtime to łapane będą wszystkie zdarzenia gdbyśmy jednak zamiast tego słowa użyli np. zmiennej pilka_plazowa to wtedy nasz "szpieg" wyłapywałby wszystkie dotknięcia tejże piłki. Proste prawda?
  • do omówienia pozostała nam jeszcze funkcja odczyt - do niej przekazujemy zmienną event, czyli nasze zdarzenie w którym znajduje się wiele różnych parametrów. W samej funkcji wpisujemy to co chcemy, by się wykonało po dotknięciu na ekran. W naszym przypadku będzie to wydrukowanie nazwy zdarzenia print(event.name) czyli w konsoli pojawi się touch przy dotyku. Oczywiście w symulatorze klikamy muszką w dowolnym punkcie zamiast dotykać ekran...

corona_sdk_45.jpg

Zobaczmy teraz efekt działania tego mini kodu. Klikając na ekranie lewym klawiszem myszy (lub dotykając w ekranie dotykowym) w konsoli pojawi się napis touch czyli funkcja print(event.name) wypisze nazwę zdarzenia.

Brawo! umiemy już wyłapywać dotyk w ekran!

Jest jednak jeden problem, gdy puścimy klawisz myszy wówczas napis "touch" znów pojawi się na ekranie. Co to oznacza? Otóż nasz "szpieg" wyłapuje zarówno początkową fazę czyli kliknięcie i odpuszczenie klawisza. Śledzi też przesunięcie, więc jak przy wciśniętym klawiszu przesuniemy myszą/palcem po ekranie to otrzymamy całą masę napisów touch w konsoli.

Wyłapywanie początku kliknięcia

  By wyłapywać jedynie dotyk i uruchomić określone działanie tylko jeden raz na dotknięcie wystarczy dodać do funkcji warunek: jeżeli faza dotyku jest równa początek lub koniec to wtedy i tylko wtedy uruchom określoną akcję. W praktyce wygląda to tak:

function  odczyt(event)
  if 
event.phase=="began" 
then
    
print (event.name
)
  
end
end

Zatem dodajemy warunek:

if spełniony_warunek then wykonaj_akcję i na końcu end.

Słowo began oznacza początek kliknięcia i wtedy zostanie wyświetlona nazwa zdarzenia w konsoli. Żadne przesunięcia i zwolnieie klaisa nie wpłyną już na program chyba że dopiszemy jakiś kod, np. sprawdzający czy nie nastąpiło czasem zwolnienie klawisza myszy bądź też puszczenie ekranu. Wtedy wystarczy dodać taki sam warunek z tą różnicą, że zamiast "began"  trzeba będzie wpiasć "ended".

corona_sdk_46.jpg

Zobaczmy program w akcji. Po dotknięciu jest tylko jeden napis touch...

W kolejnym artykule zobaczymy jak wyłapywać dotyk na konkretnym obiekcie.

Czytaj dalej: Obsługa dotyku w smartfonach
Warning: include_once(includes/rss_fetch.php) [function.include-once]: failed to open stream: No such file or directory in /home/ekoinst/domains/pcwiedza.pl/public_html/tworzenie-gier/includes/funkcje.php on line 548

Warning: include_once() [function.include]: Failed opening 'includes/rss_fetch.php' for inclusion (include_path='.:/opt/alt/php52/usr/share/pear:/opt/alt/php52/usr/share/php') in /home/ekoinst/domains/pcwiedza.pl/public_html/tworzenie-gier/includes/funkcje.php on line 548

Różne

copyright © Pcwiedza.pl