Witam!
W dzisiejszej cz??ci zajmiemy si? funkcjami tonumber,tostring, p?tl? next o kt?rej zapomnia?em wspomnie?, budow? warunku z operator?w te? zapomnia?em o tym wspomnie? w operatorach. I funkcj? interpolateBetween. Oraz fal? sinusoidaln? (sinusoid?), kt?ra jest dla wielu czarn? magi?. Om?wimy tez loadstring i type.
tonumber
Funkcja tonumber, jak sama nazwa brzmi zmienia string na liczb?.
Taki kod nam co prawda zadzia?a. Ale tylko w lua. Na przyk?adzie
Mo?e zwr?ci? b??d, w zale?no?ci od warto?ci elementdaty. Dlatego trzeba u?y? tonumber.
tostring
Funkcja tostring dzia?a odwrotnie. Zamienia liczb? na string.
Te? zadzia?a, ale w lua.
Natomiast w mta
Co prawda z liczb? te? by zadzia?a?o, ale nie mam pomys?u na inny przyk?ad
loadstring
Funkcja loadstring, '?aduje' string. Mo?emy do niej przekaza? funkcj? w postaci stringa a ona j? wykona je?li j? wywo?amy. Obecnie w lua nie ma ju? funkcji loadstring, zast?puje j? funkcja load, ale mta korzysta ze starszej wersji lua, gdzie loadstring jeszcze jest.
Taki kod zwr?ci b??d, w loadstring wrzucamy w cudzys??w, a tekst w print te? przyjmuje string, wi?c nie mo?emy go da? w cudzys?owie r?wnie? bo finalnie 'zamkniemy' string od loadstring. Wi?c musimy u?y? apostrof?w. Natomiast je?li otwieramy loadstring w apostrofach to w print musimy u?y? cudzys?ow?w.
Taki kod owszem zadzia?a, ale zwr?ci
x dla nas nie jest wa?ne. Musimy wi?c t? funkcj? wywo?a?.
Taki zwr?ci nam
Warunek z AND i OR
Niestety zapomnia?em wspomnie? o tym w cz??ci z operatorami.
Zamiast
Je?li x + 15 jest mniejsze od 25 to dodajemy 15, je?li nie to odejmujemy 5. Mo?emy takiego czego? unikn??,
Ju? t?umacz?. Tutejsze "and" zadzia?a tak jak "if" w pierwszym przyk?adzie. Czyli je?li x + 15 jest mniejsze od 25 to dodajemy 15. Natomiast "or" zadzia?a jak else w pierwszym przyk?adzie. Czyli je?li nie jest mniejsze od 25 to odejmujemy 5.
P?tla next
P?tla next.. tak?e zapomnia?em o niej w cz??ci z p?tlami.
Tak wi?c, p?tla next zwraca nam kolejny indeks i jego warto?? z tabeli. while k do - sprawdzamy czy taki indeks istnieje, je?li tak to lecimy tak d?ugo a? b?dzie si? spe?nia? nasz "warunek" while. k,v = next(tbl,k) - ustawiamy nast?pny indeks, czyli local k,v zwraca nam nast?pny indeks (pierwszy) a potem jak ju? wy?wietlimy nasze pierwsze k,v ustawiamy k,v na nast?pny indeks. W drugim przypadku ustawiamy drugi argment na k, czyli od kt?rego obecnego indeksu ma by? ten nast?pny. Skoro local k,v zwraca pierwszy indeks czyli 1, to k,v po print zwraca nam 2, czyli next(tbl, 2) - P?tli tej ma?o kto u?ywa, i ma?o kto j? niestety zna. Mo?emy takiej p?tli u?y? zamiast czego? takiego
To jest przyk?ad z p?tl?.
Przyk?ad z while
Tutaj ju? nie musimy sprawdza? warunkiem, bo p?tla while wykona si? tyle razy a? i b?dzie mniejsze lub r?wne od najwi?kszego indeksu (ostatniego indeksu 5). Mo?emy te? zastosowa? t? p?tl? w taki spos?b
type
Funkcja type zwraca dos?ownie "typ" zmiennej.
Z racji i? x to liczba to wyprintuje nam "number".
A tutaj "string".
Tu "boolean"
Tutaj "nil". Mo?emy to wykorzystywa? do warunk?w, np
interpolateBetween
Funkcja ta jest ju? funkcj? typowo z mta.
Funkcja ta wykonuje podane przez nas animacje. Mo?e to by? animowana zmiana koloru,alphy,pozycji,rozmiar?w.
Nie b?d? rozpisywa? tutaj sk?adni, gdy? jest na wiki wszystko opisane.
Najwa?niejszymi argumentami i wymaganymi jest x1,y1,z1,x2,y2,z2,progress i easing.
x1,y1,z1 Jest pozycj? od kt?rej podana animacja ma si? dzia?. Pozycj? w kontek?cie argument?w, dos?ownie s? to warto?ci okre?laj?ce warto?? pocz?tkow? animacji.
x2,y2,z2 To warto?ci okre?laj?ce ko?cow? warto?? animacji.
progress To warto?? okre?laj?ca d?ugo?? trwania animacji. Standardowo jest to r??nica pomi?dzy
.
easing Jest to rodzaj/typ animacji, spis typ?w mo?na znale?? tutaj
To nie jest tak, ?e musimy przekaza? warto?ci do wszystkich 6 argument?w, czyli x,y,z,x2,y2,z1. Je?li chcemy zmieni? np kolor to wype?niamy dwie warto?ci z tych sze?ciu i pokolei. Czyli x1 b?dzie pocz?tkowym kolorem, a x2 b?dzie ko?cowym R.
Je?li chcemy zmienia? ca?o?? czyli R,G,B to podajemy x1,y1,z1 jako pocz?tkowe R,G,B i x2,y2,z2 jako ko?cowe R,G,B.
No, i jak wida? kolor zmieni si? z czerwonego na niebieski p?ynnie. Je?li chcemy zmieni? powiedzmy rozmiar czego? p?ynnie, powiedzmy szeroko??. To operujemy dwoma warto?ciami x1,x2
Operujemy na x1 i x2. Mo?emy na y1,y2, z1,z2 ale po co, lepiej robi? sobie po kolei. Czym jest pod?oga? (_) - Ot?? pod?oga daje nam troch? wi?cej pami?ci. Nie musimy deklarowa? zmiennych, kt?re s? nam nie potrzebne. R?wnie dobrze, nie musimy ich podawa?, mo?emy po prostu zrobi? np width = interpolateBetween. Nie b?d? wi?cej si? tu rozpisywa?, bo jest poradnik na ten temat bardzo dobry tutaj.
sinusoida
Sinusoida, jest to sama matematyka, wi?c bez matematyki du?o nie zdzia?amy.
Przyk?adem sinusoidy mo?e by? zmiana pozycji, zmiana alphy, zmiana koloru. Identycznie jak w przypadku interpolacji.
Da nam to efekt "migaj?cej" alphy. getTickCount() / 300 da nam efekt pulsacji, a 120 to amplituda przyk?adowa.
Mo?emy r?wnie? sinusoidy u?y? w interpolacji. Podaj?c j? jako progress.
Taki kod b?dzie nam dos?ownie ci?gle zmienia? pozycj? z 0 do 50. Gdy nasza pozycja dojdzie do 50, to wr?ci do 0 i na odwr?t. Da to taki efekt "odbijania", jakby?my odbijali pi?k? od ?ciany - wraca ona do nas po rzucie.
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach