Licznik – stan i obsługa dotyku
Stan aplikacji – zmienna licznika
Aby aplikacja „pamiętała” aktualną wartość licznika, potrzebujesz zmiennej w obiekcie View. W Monkey C dodajesz pole do klasy i ustawiasz je w initialize():
class CounterAppView extends WatchUi.View {
private var _counter;
function initialize() {
View.initialize();
_counter = 0;
}
function onUpdate(dc) {
dc.setColor(Graphics.COLOR_WHITE, Graphics.COLOR_BLACK);
dc.clear();
var tekst = _counter.toString();
dc.drawText(dc.getWidth() / 2, dc.getHeight() / 2,
Graphics.FONT_LARGE, tekst,
Graphics.TEXT_ALIGN_CENTER | Graphics.VERTICAL_ALIGN_CENTER);
}
}
- _counter – przechowuje aktualną wartość licznika (zaczynamy od 0).
- _counter.toString() – zamiana liczby na tekst, bo
dc.drawTextoczekuje stringa.
Na razie ekran zawsze pokazuje wartość _counter, ale nie zmienia się – brakuje reakcji na wejście użytkownika.
Obsługa dotyku i przycisków – onSelect
W Connect IQ widok może implementować onSelect(). System wywołuje go, gdy użytkownik dotknie ekranu (lub naciśnie wybrany przycisk, np. „Enter”). W środku zwiększysz licznik i poprosisz o odświeżenie ekranu.
Gdzie dodać onSelect? W tej samej klasie co onUpdate – w pliku widoku (np. CounterAppView.mc w folderze source/). Wpisz nową funkcję wewnątrz klasy CounterAppView, np. zaraz po onUpdate(dc):
function onUpdate(dc) {
dc.setColor(Graphics.COLOR_WHITE, Graphics.COLOR_BLACK);
dc.clear();
var tekst = _counter.toString();
dc.drawText(dc.getWidth() / 2, dc.getHeight() / 2,
Graphics.FONT_LARGE, tekst,
Graphics.TEXT_ALIGN_CENTER | Graphics.VERTICAL_ALIGN_CENTER);
}
function onSelect() {
_counter = _counter + 1;
WatchUi.requestUpdate();
}
- _counter = _counter + 1 – zwiększenie licznika o 1.
- WatchUi.requestUpdate() – informuje system, że trzeba ponownie narysować ekran; wkrótce zostanie wywołane onUpdate(dc) z aktualną wartością.
Po dodaniu onSelect() uruchom aplikację na emulatorze: za każdym dotknięciem (lub naciśnięciem akcji) liczba na ekranie powinna rosnąć.
Powrót – onBack
Aby użytkownik mógł wyjść z aplikacji (np. przyciskiem „Wstecz”), możesz zaimplementować onBack() i wywołać WatchUi.popView():
function onBack() {
WatchUi.popView(WatchUi.SLIDE_IMMEDIATE);
}
Dzięki temu naciśnięcie „Wstecz” zamyka widok i wraca do menu zegarka.
Podsumowanie – pełna aplikacja Counter
- Stan – zmienna
_counterw View, inicjalizowana winitialize(). - Rysowanie – w
onUpdate(dc)rysujesz_counter.toString()na środku ekranu. - Wejście – w
onSelect()zwiększasz_counteri wywołujeszWatchUi.requestUpdate(). - Wyjście – w
onBack()wywołujeszWatchUi.popView().
Masz gotową, prostą aplikację Counter. W kolejnej lekcji: testowanie na emulatorze i na urządzeniu oraz publikacja w Connect IQ Store.