Ta strona korzysta z plików cookie, abyśmy mogli zapewnić jak najlepszą obsługę. Informacje o plikach cookie są przechowywane w przeglądarce i wykonują takie funkcje, jak rozpoznawanie cię po powrocie do naszej witryny i pomaganie naszemu zespołowi w zrozumieniu, które sekcje witryny są dla Ciebie najbardziej interesujące i przydatne.
10 sztuczek Design Studio – część 10
Rekurencja w skryptach
Jedną z rzeczy, których brakuje w obecnym środowisku programistycznym Lumira Designer, to różnego rodzaju pętle. Możemy osiągnąć zbliżoną funkcjonalność korzystając z wbudowanego warunku if, globalnych funkcji oraz globalnych zmiennych, aby zaimplementować rekurencję.
W naszej aplikacji chcielibyśmy losować liczbę po naciśnięciu przycisku, ale w taki sposób, by nigdy nie wybrać dwóch takich samych wartości pod rząd. W tradycyjnym środowisku programistycznym, takie zadanie szybko udałoby się nam wykonać korzystając z pętli while lub wykorzystując funkcję rekurencyjną. Ze względu na to, że nie mamy dostępu do pierwszej opcji, skorzystamy z tej drugiej.
Tworzymy dwie globalne zmienne – numer, którabędzie przechowywać obecnie wylosowaną liczbę, oraz old_number która będzie przechowywać tą wylosowaną jako ostatnią (globalne zmienne to takie, które możemy wykorzystywać w każdym komponencie naszej aplikacji i której wartość zapisują się między nimi).
Aby przejść do globalnych zmiennych, należy zaznaczyć naszą aplikację korzystając z okna Outline, a następnie przejść do jej właściwości, dział Scripting, pole Global Scripts Variables.
Przy definiowaniu nowej zmiennej musimy ustalić jej typ, domyślną wartość oraz określić, czy można ją wykorzystać jako parametr URL (dzięki tej właściwości możliwe jest przekazanie wartości zmiennej korzystając z parametrów adresu internetowego).
Tworzymy nasze zmienne, nadajemy im typ float oraz tą samą wartość :
Następnie tworzymy globalną bezargumentową funkcję (sposób, w jaki można tego dokonać został nakreślony w ciekawostce nr 5). W moim przypadku nazwałem ją generate i będzie służyć do losowania nowej liczby oraz sprawdzania, czy różni się od ostatnio wybranej.
// Sprawdzamy, czy nowa wartość jest taka sama, jak ta ostatnio wylosowana
if(picture == old_picture){
// Generuj wartość
varfirst_random = Math.random();
// Sprowadź do formy całkowitej
first_random = first_random * 10;
// Zapisz do globalnej zmiennej
number = Math.round(first_random);
// Ponownie wchodzimy do naszej funkcji
GLOBAL_SCRIPTS_1.generate();
}else{
// Nie wykonuj nic jeśli wylosowana wartość różni się od tej ostatnio wybranej
}
Następnie musimy dodać przycisk, który będzie wywoływał funkcję, a także wypełniał zmienną old_number. Przykładowy kod uruchamiany podczas jego naciśnięcia:
// Wywołujemy naszą funkcję
GLOBAL_SCRIPTS_1.generates();
// Wykorzystujemy naszą liczbę, np. wyświetlamy ją za pomocą elementu tekstowego
TEXT_1.setText(„”+number);
// Zapamiętujemy wylosowany numer
old_number = number;
Jest to oczywiście tylko przykład – odpowiednie wykorzystanie rekurencji może zapewnić nam wiele innych ciekawych funkcjonalności!