SWiSH Forum
Forum użytkowników programów SWiSH

SWiSH Max - Obrót obiektu

Marc - Sro 13 Sty, 2010 14:28
Temat postu: Obrót obiektu
Witam. Na początku przedstawię kod:
Przycisk:
on (rollOver) {
_root.kolo.destination = 1600;
}

Obiekt który ma się obarcać:
onSelfEvent (enterFrame) {
_rotation = Math.approach(_rotation, _root.kolo.destination, 0.65);
}

Po uruchomieniu obiekt nie obraca się o 1600 stopni tylko kręci się cały czas. Wszystko działa dobrze do 180 stopni, a powyżej tej wartości animacja się tak jakby powtarza i obiekt cały czas się kręci i nie zatrzymuje. Dlaczego się tek dzieje? Jak temu zaradzić?
Z góry dziękuję za odpowiedź.

Januszr - Sro 13 Sty, 2010 15:13

walkaround.
Marc - Sro 13 Sty, 2010 15:34

No tak... ale moja animacja opiera się na przesuwaniu szyny zębatej koło której jest koło zębate którego animacja musi być poprawna. Jeżeli szyna przesunie się o jedną pozycję (np. 1 metr) to koło zębate powinno przekręcić się o np. 360 stopni, jeżeli szyna przesunie się o 3 pozycję (3 metry) koło wykonuje obrót o 1080 stopni. Więc przykładowo

1 przycisk - 10 stopni
2 przycisk - 20 stopni
3 przycisk - 30 stopni
4 przycisk - 40 stopni

jeżeli szyna zębata ustawiona jest na 2 pozycji (przesuwa się tam po naciśnięciu 2 przycisku), a naciśnie się przycisk 3 koło zębate powinno przekręcić się o 10 stopni.

Wszystko by działało w moim kodzie gdyby nie ten problem opisany w pierwszym poście.
(Mam nadzieję że napisałem wszystko zrozumiale :D )

Januszr - Sro 13 Sty, 2010 21:42

Też na efektach się da :P np to jest na efektach move:
http://infocentre.pl/pliki/planetarna.exe

A odnośnie skryptu to pochrzaniłem i musiałem zapytać się mądrzejszych. Mam nadzieję, że przyda Ci się - w załączniku masz, mam nadzieję, to co potrzebowałeś.

Marc - Czw 14 Sty, 2010 14:38

Trochę to skomplikowane :/ A czy zapomocą tych funkcji co podałem w pierwszym poście nie dałoby się tego jakoś zrobić?
Januszr - Czw 14 Sty, 2010 18:57

Prościej nie potrafię. Nie znalazłem żadnej specyfikacji _rotation - wydaje się jednak (co logiczne było by), że obrót może być nie większy niż kąt pełny - w innym przypadku obraca się w kółko. Dlatego trzeba licznik :P
Teraz masz już na zmiennych.
Obsługa:
ustal "kroczki" na wartość zadowalającą, przez którą da się podzielić kąt;
ustaw sobie w buttonach zmienną obroty, np.,jak w pierwszym guziku:
on (release) {
var obroty : Number = 90;
}

Inaczej się zapewne da, ale za wysokie progi...
Zdrówko

Marc - Pią 15 Sty, 2010 11:58

Niby wszystko działa tak jak powinno, ale to jeszcze nie to :/ W mojej animacji każdy obrót powinien trwać tyle samo. Jeżeli np obrót o 10 stopni trwa 2s to o 400 stopni też powinien tyle trwać. Wracając jeszcze do kodu podanego w pierwszym poście czyli:

onSelfEvent (enterFrame) {
_rotation = Math.approach(_rotation, _root.kolo.destination, 0.65);
}

Zauważyłem że jeżeli zmieni się wartość 0.65 na 0.1 wszystko działa tak jak powinno tylko animacji nie ma obiekt po prostu przeskakuje na końcową pozycję. I tu mam pytanie czy to może być spowodowane, że wartość 0.1 działa, a np 0.65 nie?

Januszr - Pią 15 Sty, 2010 18:16

Dorzuć plik swi - coś pokombinuję, aby wszystko wyglądało ok.

Powered by phpBB modified by Przemo © 2003 phpBB Group