Gość ant-3d Napisano 28 Maj 2009 Napisano 28 Maj 2009 (edytowane) 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 2009 przez ant-3d
Alibaba Napisano 28 Maj 2009 Napisano 28 Maj 2009 Nie znam maxscriptu, ale w innych jezykach sprawe rozwiazuje deklaracja funkcji. Moze maxscript rowniez posiada mozliwosc wczesniejszego zadeklarowania funkcji?
pchela1313 Napisano 28 Maj 2009 Napisano 28 Maj 2009 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
Gość Gosc Napisano 14 Czerwiec 2009 Napisano 14 Czerwiec 2009 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
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się