Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 18-08-2005, 09:01   #1 (permalink)
Neuer User
 
Registriert seit: Apr 2005
Beiträge: 44
Drehen eines MC per AS- Vorzeichenprobleme

Moin,

ich bin gerade dabei per AS einen MC langsam zu drehen. Dafür habe ich einen Ausgangswinkel und einen Zielwinkel. Je nach dem, welcher Winkel größer ist wird die Drehrichtung gewählt. Soweit ist auch alles fein. Das Skript habe ich einfach mal angehängt. rotP1 ist der Ausgangswinkel. rotDest1 ist der Zielwinkel.

Jetzt das Problem:
Wir stellen uns vor, der Zielwinkel wird größer als 180 (z.B. 315 Grad) und der MC somit schrittweise in Richtung 315 Grad gedreht. Sobald der, zum jeweiligen aktuell Zeitpunkt, abgefragte Winkel des MC größer als 180 vertauscht Flash die Vorzeichen und macht beim nächsten Aufzählschritt eine -175 daraus mit dem ergebnis, das sich der MC endlos dreht, da er ja nie die Abfrage nach den 315 Grad erfüllen kann. Kann man Flash irgendwie dazu bringen, den Winkel richtig in Schritten von 0 bis 360 grad zu betrachten oder muss ich mir jetzt irgend eine Krücke programmieren?


PHP-Code:
function playerDrehTurn (rotP1,rotDest1){
   
trace ("rotP1 :"+rotP1+"    rotDest1 :"+rotDest1);   
       if (
rotP1>rotDest1){   
           
trace ("rotP1>rotDest1");
           
_root.player.onEnterFrame = function () {
                  
_root.player._rotation=_root.player._rotation-5;
                  if (
_root.player._rotation==rotDest1) {
                      
delete this.onEnterFrame;
                  }
            }
       } else {
             
trace ("else");
            
_root.player.onEnterFrame = function () {
                  
_root.player._rotation=_root.player._rotation+5;
                  
trace ("roation"+_root.player._rotation);
                  if (
_root.player._rotation==rotDest1) {
                        
delete this.onEnterFrame;
                  }
             }
       }
    

Questor ist offline   Mit Zitat antworten
Alt 18-08-2005, 14:29   #2 (permalink)
Neuer User
 
Benutzerbild von iskender
 
Registriert seit: Apr 2003
Beiträge: 30
krücke

hi,

hab mir das mal angesehen.
ich glaub du brauchst ne krücke
ActionScript:
  1. function playerDrehTurn(rotP1, rotDest1) {
  2.    
  3.     if (rotP1>rotDest1) {
  4.        
  5.         _root.player.onEnterFrame = function() {
  6.             _root.player._rotation -= 5;
  7.             if (_root.player._rotation == rotDest1) {
  8.                 delete _root.player.onEnterFrame;
  9.                 _root.player._rotation = -180;
  10.                 playerDrehTurn_2(_root.player._rotation, 0);
  11.             }
  12.         };
  13.     }
  14. }
  15. function playerDrehTurn_2(rotP2, rotDest2) {
  16.     if (rotP2<rotDest2) {
  17.         _root.player.onEnterFrame = function() {
  18.             _root.player._rotation += 5;
  19.             if (_root.player._rotation == rotDest2) {
  20.                 delete _root.player.onEnterFrame;
  21.             }
  22.         };
  23.     }
  24. }
  25.  
  26.  
  27. playerDrehTurn(0, 180);

so muesste es functionieren.
iskender ist offline   Mit Zitat antworten
Alt 18-08-2005, 14:38   #3 (permalink)
Neuer User
 
Benutzerbild von iskender
 
Registriert seit: Apr 2003
Beiträge: 30
korrektur

ActionScript:
  1. function playerDrehTurn(rotP1, rotDest1) {
  2.     trace("rotP1 :"+rotP1+"    rotDest1 :"+rotDest1);
  3.     if (rotP1<rotDest1) {
  4.         trace("rotP1>rotDest1");
  5.         _root.player.onEnterFrame = function() {
  6.             _root.player._rotation+=5;
  7.             if (_root.player._rotation == rotDest1) {
  8.                 delete _root.player.onEnterFrame;
  9.                 _root.player._rotation = -180;
  10.                 playerDrehTurn_2(_root.player._rotation, 0);
  11.             }
  12.         };
  13.     }
  14. }
  15. function playerDrehTurn_2(rotP2, rotDest2) {
  16.     trace("rotP1 :"+rotP2+"    rotDest1 :"+rotDest2);
  17.     if (rotP2<rotDest2) {
  18.         trace("rotP1>rotDest1");
  19.         _root.player.onEnterFrame = function() {
  20.             _root.player._rotation += 5;
  21.             if (_root.player._rotation == rotDest2) {
  22.                 delete _root.player.onEnterFrame;
  23.             }
  24.         };
  25.     }
  26. }
  27. playerDrehTurn(0, 180);
iskender ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 04:09 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele