Jak usuwać obiekty przez dotyk Android
Jak usuwać dotknięte obiekty
Zróbmy teraz miniprogramik, który sprawi, że gdy dotkniemy piłkę to ona zniknie a gdy zabierzemy rękę to ona się znowu pojawi.
Nie będziemy musieli wprowadzać zbyt wiele zmian w porównaniu do poprzedniego przykładu - zobaczmy sami:
local pilka_plazowa = display.newImage("pilka_plazowa.png")
function odczyt(event)
if event.phase=="began" then
pilka_plazowa.isVisible=false
end
if event.phase=="ended" then
pilka_plazowa.isVisible=false
end
end
pilka_plazowa:addEventListener("touch", odczyt)
W funkcji obsługującej dodajemy tylko informację o tym, że przy fazie dotyku należy wyłączyć wyświetlanie piłki ustawiając parametr isVisible na false. To działa znakomicie. Po uruchomieniu i kliknięciu na piłkę ona faktycznie znika. Jest jednak problem z tym, żeby się pojawiła... Puszczenie ekranu lub lewego klawisza myszy nie sprawia, że piłka wróci na ekran. Wiecie już dlaczego?
Ano dlatego, że linijka:
pilka_plazowa:addEventListener("touch", odczyt)
obsługuje zdarzenie dotyczące piłki ale skoro piłka zniknęła to nasz szpieg przestał się tym interesować a on przecież reaguje tylko na piłkę a przy puszczaniu kliknięcie jej już tam nie ma... Wiec nic druga część nie zadziała niestety...
Jak można ten problem rozwiązać? W naszym przykładzie możemy sobie pozwolić na banalne rozwiązanie bo wystarczy dodać:
Runtime:addEventListener("touch", odczyt)
i piłka będzie pojawiać się z powrotem gdy puścimy kliknięcie czy dotyk. Nie zawsze możemy sobie pozwolić na takie rozwiązanie, bo przecież w tej sytuacji każdy dotyk w ekran będzie owocował pojawieniem się piłki w przypadku upuszczenia dotyku no ale to już problem na inny temat ja go tylko tu sygnalizuję...
Jak całkowicie usunąć obiekty z ekranu w Corona SDK?
Niekiedy będziemy chcieli się całkowicie pozbyć obiektów z ekranu wówczas trzeba zastosować inną funkcję czyli zamiast:
pilka_plazowa.isVisible=false
Trzeba wstawić w kod:
pilka_plazowa:removeSelf()
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