Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-10-2008, 08:03   #1 (permalink)
Neuer User
 
Registriert seit: Mar 2003
Beiträge: 46
Rotation per AS abbremsen

Guten morgen zusammen,
ich möchte die Rotation eines MC´s per AS abbremsen:
Der Aufruf bis 180° geht wunderbar.
Ab 180° dreht sich der MC in eine Schleife und hört nicht mehr auf. Warum?

Wer kann mir helfen?

ActionScript:
  1. MovieClip.prototype.rotiere = function(speed, rotateTo) {
  2.    
  3.         this.onEnterFrame = function() {
  4.         var rot = Math.round(rotateTo-this._rotation);
  5.         this._rotation +=1/speed*rot;
  6.     }
  7.    
  8. }
  9.  
  10. test_mc.rotiere(10,91);


Danke für einen Tipp.

ElectroCunt
ElectroCunt ist offline   Mit Zitat antworten
Alt 20-10-2008, 10:49   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
Ab 180° dreht sich der MC in eine Schleife und hört nicht mehr auf. Warum?
Selber testen! trace dir bspw. rot und _rotation mal aus...
  Mit Zitat antworten
Alt 20-10-2008, 11:25   #3 (permalink)
Neuer User
 
Registriert seit: Mar 2003
Beiträge: 46
die Rotation von z.B. 181° ist ja das selbe wie -179°, d.h. sobald der MC über die 180° drüber ist, springt die
ActionScript:
  1. this._rotation
in
ActionScript:
  1. var rot = Math.abs(Math.round(rotateTo-this._rotation));
auf einen negativen Wert und fängt wieder von vorne an.
Wieso ist die Rotation dann auf einmal negativ?
Ich weiss leider nicht wie ich das lösen kann.
ElectroCunt ist offline   Mit Zitat antworten
Alt 21-10-2008, 22:02   #4 (permalink)
.
 
Registriert seit: May 2003
Ort: bayern
Beiträge: 1.117
in flash läuft die rotation eines objektes von -180 bis +180 Grad, daraus ergeben sich die 360 grad für eine vollständige umdrehung.
was du brauchst ist eine funktion die dir unabhängig davon ob die rotation nun positiv oder negativ ist dir den entsprechenden positiven wert zurückgibt.

m.a.W. sollte der winkel kleiner 0 sein addierst du einfach 360 dazu.
PHP-Code:
MovieClip.prototype.rotiere = function(speedrotateTo) {  
    
this.onEnterFrame = function() {
    var 
rot Math.round(fixAngle(rotateTo-this._rotation));
    
this._rotation +=1/speed*rot;
    
trace(this._rotation+','+rot);
    if (
rot == 0)delete this.onEnterFrame;
     }

};
function 
fixAngle(angle){
    
angle %= 360;
    return (
angle<0)?angle+360 angle;
};
mc.rotiere(10,90); 
und den onEnterFrame Event zu beenden wenn er nicht mehr gebraucht wird gehört auch dazu.
__________________
[mooseMash]
mooseMash ist offline   Mit Zitat antworten
Alt 28-10-2008, 19:51   #5 (permalink)
Neuer User
 
Registriert seit: Mar 2003
Beiträge: 46
Perfekt, vielen Dank für die fixAngle() Funktion. War mir so neu.
Funktioniert Bestens
ElectroCunt 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 03:30 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele