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...
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".
Zobaczmy program w akcji. Po dotknięciu jest tylko jeden napis touch... |
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