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.
![](https://quercus.pl/wp-content/uploads/2019/10/KK10_1.png)
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ść :
![](https://quercus.pl/wp-content/uploads/2019/10/KK10_2.png)
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!