Fading per AS

intercorni

Erfahrenes Mitglied
Hallo,

wie man per AS ein Fading-In hinbekommt, war hier schonmal zu lesen:

PHP:
function timefade(mc,times) {
	if(timer >= times && _root[mc]._alpha <= 100) {
		_root[mc]._alpha++;
	}
}
onLoad = function() {
	_global.timer=0;
}

_root.onEnterFrame = function() {
	timer++;
	timefade("box1",10);

}

Wie kann man aber diese Einblendzeit-Steuerung mit integrieren:

PHP:
function fade_in(mc) { 
    if (_root[mc]._alpha<=100) { 
        _root[mc]._alpha++; 
    } 
} 
function fade_out(mc) { 
    if (_root[mc]._alpha>=0) { 
        _root[mc]._alpha--; 
    } 
} 
setInterval(fade_in, 25, "zielobjekt");

Ziel ist es, neben dem genauen Einblend-Startzeitpunkt auch die Blenddauer bestimmen zu können. Sicherlich auch für andere Flasher von Interesse?

Viele Grüße,

Cornel
 
Hi,

ist das ne Frage, oder wolltest Du nur das Script posten? :)

Gruß

P.S.: Besonders im letzteren Falle wäre es besser, Du würdest für Code PHP- oder Code-Tags verwenden. Dadurch erhöht sich die Lesbarkeit erheblich.
.
 
Hi,

ok, was genau soll passieren:

Du möchtest einen MovieClip nach einem bestimmten Intervall ein- bzw. ausfaden und angeben, wie lange dieser Vorgang dauern soll?

EDIT: In diesem Fall hilft vielleicht folgende Funktion:
PHP:
var fps = 24;

function fadeInTime(dest, time, alpha) {
	var spf = ((alpha - dest._alpha) / fps) / time;
	var stime = getTimer();
	trace(spf);
	dest.onEnterFrame = function() {
		this._alpha += spf;
		if ((getTimer() - stime) / 1000 > time) delete this.onEnterFrame;
	}
}

fadeInTime(clip, 2, 0);
Du übergibst den Ziel-MovieClip als Referenz, die Anzahl Sekunden, die das Fading dauern soll, sowie den Ziel-Alphawert. In der Variable "fps" muss die eingestellte Framerate (z.B. 24 bei 24 frames/sec.) angegeben sein (die lässt sich mit einer anderen Funktion allerdings auch berechnen: schau mal in den Sammelthread, da hat Matthias K. einige Beispiele gepostet).

Gruß
.
 
Zuletzt bearbeitet:
Danke für Deine Hilfe. Wenn ich Alpha auf 100 setze, dann funktioniert es auch :-)
Lasse sich die Werte auch unter einer Sekunde eintragen?
Und wie läßt sich der MC nicht nur ein- sondern auch ausfaden?

Viele Grüße,

Cornel
 
Zuletzt bearbeitet:
Hi,

Du kannst den MC damit sowohl ein- als auch ausblenden:
PHP:
fadeInTime(meinclip, 2, 10);
// fadet den MC in 2 Sekunden nach _alpha = 10;
fadeInTime(meinclip, 15, 90);
// fadet in 15 Sekunden nach _alpha = 90
Werte kleiner als 1 Sekunde gehen natürlich auch:
PHP:
fadeInTime(meinclip, 0.5, 0);
// Fadet in einer halben Sekunde komplett aus

Gruß

P.S.. die Funktion ist auf diese Weise nicht besonders genau; ein Fading nach 50% endet gerne mal bei 44% o.ä. Du kannst entweder den Alphawert am Ende auf das gewünschte Ziel setzen, oder mit einem Intervall arbeiten, dass nicht unbedingt durch die Framerate teilbar ist.
.
 
Zuletzt bearbeitet:
Danke für die Hilfe
Läßt sich denn auch angeben, ab wann genau das Fading erfolgt?
z.B. MC1 fadet ab 10 sec ein, MC2 erst nach 15 sec. Jedoch ohne
die Fadinggeschwindigkeit/Dauer zu verändern?

Gruss,

Cornel
 
Hi,

ja, indem Du ein Interval davorschaltest:
PHP:
var fps = 24;

function fadeInTime(dest, time, alpha, delay) {
	clearInterval(dest.iv);
	dest.iv = setInterval(function() { startFade(dest, time, alpha); }, delay);
}

function startFade(dest, time, alpha) {
	clearInterval(dest.iv);
	var spf = ((alpha - dest._alpha) / fps) / time;
	var stime = getTimer();
	dest.onEnterFrame = function() {
	this._alpha += spf;
		if ((getTimer() - stime) / 1000 > time) delete this.onEnterFrame;
	}
}

fadeInTime(clip, 2, 0, 500);

Gruß
.
 
Oh das funktioniert wirklich gut jetzt.
Wenn man auf beiden Systemen, also Mac und Win eine ordentliche Performance erreichen möchte, musste man früher Framewerte von 31 verwenden, weil der Mac Flashplayer das nicht anders konnte. Gibt es dieses Bug heute auch noch oder eine
Empfehlung, ab welcher Framerate eine ordentliche Performance möglich ist?

Cornel
 
Nicht dass ich wüsste.

Was verstehst Du in diesem Zusammenhang unter "Performance"? Klar ist: Je höher die Framerate, desto flüssiger läuft im Prinzip der Film. "Im Prinzip" deshalb, weil höhere Frameraten natürlich auch mehr Rechenleistung verlangen. Schlimmstenfalls geht die Framerate also bei Auslastung des Systems wieder runter.

Das kann allerdings zu Folge haben, dass Dein Film bezüglich der Framerate größeren Schwankungen unterworfen ist, wenn sich Abschnitte mit geringer Leistungsanforderung mit solchen mit großer abwechseln. In diesem Fall kann es sinnvoll sein, gleich eine etwas niedrigere Rate zu wählen.

Es gilt also meist, einen Kompromiss zu finden. Überleg Dir, was Dir wichtiger ist: Maximale Raten unter der Gefahr des "Einbruchs", oder lieber eine konstante niedrigere Rate. Die Wahl hängt dabei auch von den "vermuteten" Systemen Deiner Zielgruppe ab. ;)

Gruß
.
 
Zurück