For + intervall

Newb

Erfahrenes Mitglied
Hi,

ich habe 3 Texte, alle als MovieClip, und will immer einen einblenden lassen und wieder ausblenden lassen.


1. Also Text 1 wird eingeblendet.
- <Schleife>
1. Text1 wird ausgeblendet, zeitgleich wird Text2 eingeblendet.
2. Text2 wird ausgeblendet, zeitgleich wird Text3 eingeblendet.
3. Text3 wird ausgeblendet, zeitgleich wird Text1 eingeblendet.
- </Schleife>

Als erstes wird Text1 eingeblendet.
Dann gehts ab in die Schleife.
Und die Schleife wiederholt sich die ganze Zeit.


Jetzt will ich das nicht alles mit FormTweens usw. machen, sondern mit Actionscript.
Ich habe das Ganze versucht mit ._alpha zu lösen:
Code:
var i:Number;

for (i = 1; 1 < 101; i++){
	text1._alpha = i;
}

Da ist mir in den Sinn gekommen: Hey die for-Schleife führt der sofort innerhalb millisec. aus, und damit wäre der Text nach dem Compilieren sofort Alpha: 100% ^^.

Sowas lässt sich doch mit einem Intervall lösen oder nicht?. So, dass man jede halbe-sekunde oder so (Damits halt flüssig läuft) immer i um 1 hochzählt.

Etwa so:
Code:
var i:Number;
var iv = setInterval(this, "next", 500);

this.onEnterFrame = function(){
	function next() {
		i ++; // Hochzählen
		text1._alpha = i;
		clearInterval(iv); // Intervall löschen
	}
}

Allerdings habe ich mich nie so wirlich mit Intervallen beschäftig und das will nicht so richtig... :-(



Könnte da mal einer drübersehen?

MfG
General ']['.G.
 
Hi,

es macht überhaupt keinen Sinn, eine Funktionsdeklaration in eine onEnterFrame-Methode zu setzen. Vielmehr kannst Du für derartige Animationen entweder ein Intervall oder eine onEnterFrame-Methode einsetzen.

Intervall-Version:
Code:
// "clip" ist der Instanzname Deines MCs

var iv = setInterval(this, "fadeIn", 50, clip);

function fadeIn(obj) {
  obj._alpha ++;
  if (obj._alpha >= 100) clearInterval(iv);
}

onEnterFrame-Version:
Code:
// "clip" ist der Instanzname Deines MCs

this.onEnterFrame = function() {
  clip._alpha ++;
  if (clip._alpha >= 100) delete this.onEnterFrame;
}

Wenn es sich bei den Zielobjekten um MovieClips handelt, und Du ein Objekt einblenden willst, wärend Du ein anderes ausblendest, empfielt es sich, Intervalle bzw. onEnterFrame-Methoden direkt als Member des Zielobjekts anzulegen:
Code:
MovieClip.prototype.fade = function(da, s) { // "da" ist der Zielalphawert, "s" die Intervalldauer
  clearInterval(this.iv);
  this.dest_alpha = da;
  this.fade_step = (da < 0)? -1 : 1;
  this.iv = setInterval(this, "fade", s);
  this.fade = function() {
    this._alpha += this.fade_step;
    if (this.fade_step > 0 && this._alpha >= this.dest_alpha) clearInterval(this.iv);
    if (this.fade_step < 0 && this._alpha <= this.dest_alpha) clearInterval(this.iv);
  }
}

// clip 1 ausblenden, während clip 2 eingeblendet wird:

clip1.fadeTo(0, 50);

clip2._alpha = 0;

clip2.fadeTo(100, 50);

Gruß

P.S.: In unseren Flash-FAQ findest Du einen Prototyp von luke_the_duke für alle möglichen Eigenschaftsänderungen (.. und in meinem Blog gibts auch was ähnliches).
.
 
Zurück