| Obrót obiektu | 
    
   
      | Autor | Wiadomość | 
            
      | Marc   Doradca
 
  
 Dołączył: 26 Lis 2009
 Posty: 70
 Skąd: Polska
 
 | 
            
               |  Wysłany: Sro 13 Sty, 2010 14:28   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   
  
  
 Pomógł: 216 razy
 Dołączył: 11 Maj 2005
 Posty: 1854
 Skąd: Stolyca od urodzenia
 
 | 
            
               |  Wysłany: Sro 13 Sty, 2010 15:13 |   
 |  
               | 
 |  
               | walkaround. |  | 
	
		|   |  | 
	  
      
		|  | 
   
         
      | Marc   Doradca
 
  
 Dołączył: 26 Lis 2009
 Posty: 70
 Skąd: Polska
 
 | 
            
               |  Wysłany: 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
  ) |  | 
	
		|   |  | 
	  
      
		|  | 
   
         
      | ^Januszr   
  
  
 Pomógł: 216 razy
 Dołączył: 11 Maj 2005
 Posty: 1854
 Skąd: Stolyca od urodzenia
 
 | 
            
               |  Wysłany: Sro 13 Sty, 2010 21:42 |   
 |  
               | 
 |  
               | Też na efektach się da  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   Doradca
 
  
 Dołączył: 26 Lis 2009
 Posty: 70
 Skąd: Polska
 
 | 
            
               |  Wysłany: 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   
  
  
 Pomógł: 216 razy
 Dołączył: 11 Maj 2005
 Posty: 1854
 Skąd: Stolyca od urodzenia
 
 | 
            
               |  Wysłany: 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   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   Doradca
 
  
 Dołączył: 26 Lis 2009
 Posty: 70
 Skąd: Polska
 
 | 
            
               |  Wysłany: 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   
  
  
 Pomógł: 216 razy
 Dołączył: 11 Maj 2005
 Posty: 1854
 Skąd: Stolyca od urodzenia
 
 | 
            
               |  Wysłany: Pią 15 Sty, 2010 18:16 |   
 |  
               | 
 |  
               | Dorzuć plik swi - coś pokombinuję, aby wszystko wyglądało ok. |  | 
	
		|   |  | 
	  
      
		|  | 
   
         
      |  |