Napisano 28 Maj 200915 l Hej Mam taki problem: fn aaa = ( bbb() ) fn bbb = ( print "DZIALAJ PAUO!!" ) aaa() powinno wywolac funkcje aaa() a ta funkcja powinna wywloac funkcje bbb(). Niestety funkja aaa() nie wywola funkcji bbb() gdyz funkcja aaa() nie wie o istenieniu funkcji bbb() bo zostala zdefiniowana pozniej. Oczywiscie moge funkcje aaa() przenies pod funkcje bbb() i bedzie juz ok. No ale ja tak zrobic nie moge bo mam troche zaleznych od siebie funkcji. W jaki sposob mam powiedziec funkcji aaa() ze funkcja bbb() jednak istnieje??? Aha, problem pojawia sie tylko przy pierwszym odpaleniu skryptu. Pozniej trzeba maxa wylaczyc i wlaczyc by zapomnial znow o istnieniu funkcji bbb(). POMOCY :) EDIT: Wujek google mi pomogl. Rozwiazanie takie ze trzebe funkcje globalnie zdefiniowac przed ich deklaracja. Czyli: global aaa global bbb fn aaa = ( bbb() ) fn bbb = ( print "DZIALAJ PAUO!!" ) aaa() i wszystko furczy :) Edytowane 28 Maj 200915 l przez ant-3d
Napisano 28 Maj 200915 l Nie znam maxscriptu, ale w innych jezykach sprawe rozwiazuje deklaracja funkcji. Moze maxscript rowniez posiada mozliwosc wczesniejszego zadeklarowania funkcji?
Napisano 28 Maj 200915 l Zamiast używać definicji globalnej, lepiej jest użyć lokalnej. Różnica jest taka, że lokalna znika, z chwilą kiedy odznaczymy element który ma w sobie tą funkcję. Zatem jeśli nie chcemy przenosić wartości między obiektami, to lokalne rozwiązania są bardziej sensowne. Czyli można zrobić to też tak: -- nie musimy co kazda linijke wpisywac local, global itd. -- wystarczy ze dane bedziemy wypisywac po przecinku local aaa,bbb fn aaa = ( bbb() ) fn bbb = ( print "DZIALAJ PAUO!!" ) aaa() Pozdrawiam
Napisano 14 Czerwiec 200915 l odpowiedz jest bardziej prozaiczna, nie ma to zwiazku z maxscript.... deklaracja ciala funkcji bbb musi sie pojawic najpierw... zanim jej uzyjesz w aaa i tyle, siara i wszystko jasne :D
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto