Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 27-01-2007, 11:57   #1 (permalink)
Neuer User
 
Benutzerbild von canon
 
Registriert seit: Aug 2006
Beiträge: 230
mc zurück drehen

hallo,

mit dem prototype soll sich der mc auf der bühne wieder auf "0" zurück drehen.
weiss jemand warum das aber nicht richtig funktioniert?

hier das as:
ActionScript:
  1. MovieClip.prototype.drehen = function(ziel, smooth) {
  2.     if (this._rotation != ziel) {
  3.         this.onEnterFrame = function() {
  4.             var unt = -this._rotation+ziel;
  5.             if (Math.round(Math.abs(unt))>0) {
  6.                 this._rotation += unt/smooth;
  7.             } else {
  8.                 this._rotation = ziel;
  9.                 delete this.onEnterFrame;
  10.             }
  11.         };
  12.     }
  13. };
  14. //aufruf:   drehen(mc._rotation, 8);
  15.  
ich hab mal die datei angehangen. wäre schön wenn sich das jemand mal anschauen könnte!

mfg,
canon
Angehängte Dateien
Dateityp: zip dreh-ff.zip (2,7 KB, 8x aufgerufen)
canon ist offline   Mit Zitat antworten
Alt 27-01-2007, 14:33   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
funktioniert doch wunderbar.

das mc steht auf der bühne auf 425.9 und y=141.9 und ist um 50 grad gedreht.

somit bei einem click:
das argument ziel ist 50 grad, drehmittelpunkt liegt bei x=-425.9 und y=-141.9
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 27-01-2007, 15:05   #3 (permalink)
Neuer User
 
Benutzerbild von canon
 
Registriert seit: Aug 2006
Beiträge: 230
dann hab ich wohl irgendwo einen denkfehler.

also im grunde soll der mc sich immer wieder "gerade" positionieren. wenn man in meinem beispiel den mc auf 45grad dreht funktioniert das auch. in den anderen fällen ist er von der position nachher immer "schräg".

weisst jemand wo mein denkfehler liegt?
mfg,
canon
canon ist offline   Mit Zitat antworten
Alt 27-01-2007, 15:07   #4 (permalink)
x39
 
Benutzerbild von georgem
 
Registriert seit: Oct 2004
Ort: St.Gallen, Schweiz
Beiträge: 1.261
es fehlt die zweite variante, dass nämlich der winkel sowohl aus dem negativen als auch positivem winkelbereich herkommen kann,

mit der bisherigen Funktion dreht sich der Movie glaub ich immer nur im UhrzeigerSinn zum Zielwinkel?
__________________
The Sleeper Must Awaken

www.margaris.de | www.exosolar.net
georgem ist offline   Mit Zitat antworten
Alt 27-01-2007, 15:38   #5 (permalink)
Neuer User
 
Benutzerbild von canon
 
Registriert seit: Aug 2006
Beiträge: 230
hi,

also so funktioniert es jetzt halbwegs in beide richtungen.
wie bekommt man das denn hin das sich der mc nicht von der stelle bewegt sondern um seinen mittelpunkt dreht?
ActionScript:
  1. MovieClip.prototype.drehen = function(ziel, smooth) {
  2.     if (this._rotation != ziel) {
  3.         this.onEnterFrame = function() {
  4.             var unt = -this._rotation+ziel;
  5.             if (Math.round(Math.abs(unt))>0) {
  6.                 this._rotation += unt/smooth;
  7.                 var unt2 = -this._rotation+ziel;
  8.             } else if (Math.round(Math.abs(unt2))<0) {
  9.                 this._rotation -= unt2/smooth;
  10.             } else {
  11.                 this._rotation = ziel;
  12.                 delete this.onEnterFrame;
  13.             }
  14.         };
  15.     }
  16. };

mfg
canon
canon ist offline   Mit Zitat antworten
Alt 27-01-2007, 22:24   #6 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
weil _root auch nur ein mc ist und du _root drehst:
Code:
MovieClip.prototype.drehen = function(ziel, smooth) {
	trace(this);
	if (this._rotation != ziel) {
		this.onEnterFrame = function() {
			var unt = (ziel-this._rotation)/smooth;
			if (Math.abs(unt)<.01) {
				delete this.onEnterFrame;
			}
			this._rotation += unt;
		};
	}
};
//
mc.onPress = function() {
	this.drehen(0, 8);
};
p.s.
ich glaube nicht, das ein absoluter wert jemals kleiner 0 wird ;-)
Math.round(Math.abs(unt2))<0
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib 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 22:32 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele