_xscale animiert?

-Phantomas-

Mitglied
Hi, habe da ein kleines Problem mit "._xscale".
Ich würde gerne einen MovieClip animiert vergrößern und weiß leider nicht wie das geht... :-(
Wäre super wenn mir jemand einen kleinen Tipp geben könnte.

Ziel: _xscale und _yscale schrittweise von 1 auf 220 erhöhen

Code:
....
Knopf_btn.onRelease = function() {
          Mein1_mc.duplicateMovieClip("Mein2_mc",+i); // erstellen
          Mein2_mc._xscale = 1; // verkleinern
          Mein2_mc._yscale = 1;
          Mein2_mc._x = 100;  // positionieren
          Mein2_mc._y = 100;

var u:Number = 0;
	while (u<220) {
		Mein2_mc._xscale = u;
		Mein2_mc._yscale = u;
		u = u+1;
		}
}

Problem: Skalierung funktioniert ohne Animation

Was mach ich falsch? Warum wird nur das Endergebnis angezeigt und nicht die Zwischenschritte?


Gruß
-Phantomas-
 
Zwischen den Schritten ist keine Pause, deswegen sieht man sie nicht.

Mach doch die Vergrößerung mit
Code:
onEnterFrame = function(){
	Mein2_mc._xscale++;
	Mein2_mc._yscale++;
}
 
Zuletzt bearbeitet:
Anders als z.B. in C++ wird in Flash eine Schleife immer komplett durchgeführt, bevor das nächste Schlüsselbild angezeigt wird.

Code:
Mein2_mc._xscale = u;
Mein2_mc._yscale = u;
u = u+1;
enstpricht im übrigen
Code:
Mein2_mc._xscale = Mein2_mc._yscale += 1;

onEnterFrame wird bei jedem Schlüsselbild ausgeführt. Du kannst es aber onRelease aktivieren:
Code:
Knopf_btn.onRelease = function() {
	// bla
	this.onEnterFrame = function() {
		Mein2_mc._xscale = Mein2_mc._yscale += 1;
		if (Mein2_mc._xscale>=200) {
			delete this.onEnterFrame;
		}
	};
};
 
Zuletzt bearbeitet:
Dein Code wäre in etwa:
Code:
var flag = false;
Mein1_mc.duplicateMovieClip("Mein2_mc",+i); // erstellen
Mein2_mc._x = 100;  // positionieren
Mein2_mc._y = 100;
Knopf_btn.onRelease = function() {
          Mein2_mc._xscale = 1; // verkleinern
          Mein2_mc._yscale = 1;
          flag = true;
}
onEnterFrame = function() { 
	Mein2_mc._xscale++;
	Mein2_mc._yscale++;
	if(Mein2_mc._xscale >= 220){
		flag = false;
	}
}

//Edit:
Da war wohl jemand schneller! ;)
 
Zuletzt bearbeitet:
Dann fehlt da aber ein if(flag) :)

onEnterFrame würde ich aus Performancegründen immer einem Objekt zuweisen und es dann nach Gebrauch wieder löschen. Sonst hat man schnell die Framerate im Keller, wenn irgendwann 50 leere onEnterFrames mit if(flag) drin parallel laufen.
 
Dann fehlt da aber ein if(flag)
Uups! :D Dankeschön...

Meinst du das ungefähr so:
Code:
Mein1_mc.duplicateMovieClip("Mein2_mc",+i); // erstellen
Mein2_mc._x = 100;  // positionieren
Mein2_mc._y = 100;
Knopf_btn.onRelease = function() {
          Mein2_mc._xscale = 1; // verkleinern
          Mein2_mc._yscale = 1;
          onEnterFrame = function() {
                    Mein2_mc._xscale++;
                    Mein2_mc._yscale++;
                    if(Mein2_mc._xscale >= 220){
                              onEnterFrame = undefined;
                    }
          };
}
 
Hrmm ...
das funktioniert schon mal, jedoch geht es irgendwie ins endlose und stoppt nicht...
und es ist super langsam ....


Dein Code wäre in etwa:
Code:
var flag = false;
Mein1_mc.duplicateMovieClip("Mein2_mc",+i); // erstellen
Mein2_mc._x = 100;  // positionieren
Mein2_mc._y = 100;
Knopf_btn.onRelease = function() {
          Mein2_mc._xscale = 1; // verkleinern
          Mein2_mc._yscale = 1;
          flag = true;
}
onEnterFrame = function() { 
	Mein2_mc._xscale++;
	Mein2_mc._yscale++;
	if(Mein2_mc._xscale >= 220){
		flag = false;
	}
}

//Edit:
Da war wohl jemand schneller! ;)
 

Neue Beiträge

Zurück