und hier kommt die genaue Beschreibung des Scriptes.
In Flash8 sind einige neue Filter integriert worden, unter anderem auch der Blurfilter.
Vorbei sind die Zeiten wo man mit mehreren Bildern arbeiten musste und das doch recht aufwändige Ausrichten auf der Bühne bis alles passte. Die neuen Filter sind allesamt nur auf einem MC (MovieClip) anzuwenden, dies zur Info für die Designer die lieber auf der Timeline arbeiten. In diesem Beispiel habe ich mich für eine komplett dynamische Lösung entschieden, da mir das Scripten einfach mehr liegt.
Nach der kurzen Theorie kommen wir zum praktischen Teil.
Als erstes wird ein neuer Film erstellt, die Bühnengröße ist hierbei egal, da dass Script den Inhalt automatisch an der Bühnenbreite/ höhe ausrichtet.
Nach dem der praktische Teil erledigt ist, geht es an das Script. Im Nachfolgenden werden ich kurz die wichtigsten Befehle bzw. den groben Ablauf erklären.
In der ersten Zeile muss die Klasse für den Blurfilter importiert werden.
Als nächstes kommt der Text der Angezeigt werden soll, dieser wird in einem Array gespeichert.PHP-Code:import flash.filters.BlurFilter;
Jetzt kommt die Deklaration der VariablenPHP-Code://Array für den Textinhalt
textInhalt = new Array("der", "neue", "Blurfilter", "mit", "dynamisch", "erzeugten", "Textfelder", "im", "Einsatz");
Die erste Funktion ist für das erstellen des Hauptmovieclips und Positionierung zuständig , der im späteren Verlauf des Scriptes bewegt wird.PHP-Code://Deklaration der Variablen
var aus_mc:MovieClip;
//zaehler
var zaehler:Number = 0;
//x/y Position für den Blureffekt
var blurY:Number = 0;
var blurX:Number;
//Qualtität des Blureffektes
var quality:Number = 2;
//Bühnenweite
var bWeite:Number = Stage.width;
//Bühnenhoehe
var bHoehe:Number = Stage.height;
//Arraylaenge
var tLaenge:Number = textInhalt.length;
//Berechnung der Filmbreite
var fLaenge:Number = bWeite*tLaenge;
Die nächste Funktion erstellt die einzelnen Textfelder aus dem Array heraus und ordnet die einzelnen Felder an.PHP-Code://Funktion zum erstellen des oberen MovieClip
function hauptMC() {
aus_mc = erstelleTextfeld(Stage.width, Stage.height, "text_feld");
aus_mc._x = bWeite/2;
aus_mc._y = bHoehe/2;
}
In der With-Anweisung werden die Eigenschaft der Textfelder definiert, hier kann natürlich beliebig erweitert werden. Ich habe hier in dem Beispiel nur das Nötigste genommen.PHP-Code://Funktion zum Erstellen des Inhaltes
function erstelleTextfeld(w:Number, h:Number, name:String) {
Die For-Schleife nehmen wir etwas genauer unter die LupePHP-Code://Formatieren der Textfelder
var txt_fmt = new TextFormat();
with (txt_fmt) {
font = "Arial";
size = 40;
bold = true;
}
//erstellt einen neuen Movieclips, auf die nächst freie Ebene
var mc:MovieClip = this.createEmptyMovieClip(name, this.getNextHighestDepth());
Mit der Methode getTextExtent und den Befehlen, textFieldHeight und textFieldWidth ist man in der Lage die genaue Größe/Höhe auszulesen, die man für das Textfeld braucht. Durch die Formel w *i-z (Bühnenweite * Stelle – ½ Textfeldbreite) wird das neue Textfeld auf der X-Koordinaten in dem Film ausgerichtet.PHP-Code://For-Schleife zum Erstellen der einzelnen Textfelder
for (i=0; i<tLaenge; i++) {
Die letzte Funktion ist für die eigentlichen Bewegung und das Blureffekt zuständig.PHP-Code://Methode gibt die Informationen zu den Textmaßen an
var groesse = txt_fmt.getTextExtent(textInhalt[i]);
//Variable z wird für die Ausrichtung gebraucht
var z = groesse.textFieldWidth/2;
//Erstellt das Textfeld, genau in der Größe und Hoehe wie gebraucht wird.
mc.createTextField("tfeld"+i, i, w*i-z, 0, groesse.textFieldWidth, groesse.textFieldHeight);
mc["tfeld"+i].border = false;
mc["tfeld"+i].wordWrap = true;
mc["tfeld"+i].text = textInhalt[i];
mc["tfeld"+i].setTextFormat(txt_fmt);
}
return mc;
}
Als erstes, wird ein Wert aus der x Postion – der Bühnenbreite an der Variablen ziel übergeben.PHP-Code://Funktion für den Blureffekt und Bewegung
function blur() {
Durch diese Berechnung wird der Hauptmovieclip auf der x-Koordinaten bewegt und je näher es dem Endpunkt (ziel) kommt abgebremst.PHP-Code:ziel = aus_mc._x-bWeite;
aus_mc.onEnterFrame = function() {
Durch den Befehl Math.abs wird das Vorzeichen einer Zahl in diesem Fall ein – entfernt so, dass der Wert Positiv ist.PHP-Code:this._x += (ziel-this._x)/5;
In den nächsten Codezeilen wird der Blurfilter defeniert und dem entsprechenden Textfeld zugewiesen, bei jedem durchlauf der onEnterFrame – Funktion wird der Filter neu definiert und zugewiesen, so dass der Blureffekt bei kleiner werdenden Geschwindigkeit auch abnimmt.PHP-Code:blurX = Math.abs((ziel-this._x)/5);
Sobald der Inhalt der Variable blurX kleiner/gleich wie 0.5, den Wert habe ich mittels trace(blurX) ermittelt, nimmt man einen kleineren Wert funktioniert das Script nicht mehr einwandfrei, die einzigste Möglichkeit wäre sicherzustellen, dass die Berechnung immer mit <= Null ist. Was aber hier nicht unbedingt von Nöten ist. Wird der Wert erreicht bzw.: Unterschritten wird das Textfeld am Ende des Filmes postioniert und die Variable zaehler um 1 erhöht.PHP-Code:var filter:BlurFilter = new BlurFilter(blurX, blurY, quality);
var filterArray:Array = new Array();
filterArray.push(filter);
this["tfeld"+zaehler].filters = filterArray;
if (zaehler == tLaenge-1) {
this["tfeld"+0].filters = filterArray;
} else {
this["tfeld"+(zaehler+1)].filters = filterArray;
}
Das Löschen und neu Erstellen des Hauptfilmes musste hier sein, weil der Hauptfilm durch das Versetzen der Textfelder immer länger wurde und Flash irgendwann die Textfelder nicht mehr richtig positioniert hat. Der User kriegt von diesem Vorgang nichts mir, da das erste Wort wieder auf der Bühne sichtbar und ausgerichtet ist.PHP-Code:if (blurX<=.05) {
this["tfeld"+zaehler]._x += fLaenge;
zaehler++;
Hier wird der Hauptfilm gestartetPHP-Code:if (zaehler>=tLaenge) {
zaehler = 0;
removeMovieClip(this);
hauptMC();
}
delete this.onEnterFrame;
}
};
}
Zum Schluß wird noch ein Interval gesetzt, damit der Film auch von alleine weiterläuft.PHP-Code://start
hauptMC();
Im Anhang findet ihr die SWF und HTML-Seite zum anschauen, die Fla habe ich mit absicht weggelassen weil ich davon ausgehe dass jeder in der Lage ist, dass Script in Flas reinzukopierenPHP-Code://Interval
var interval;
interval = setInterval(blur, 5000);
![]()

LinkBack URL
About LinkBacks

Zitieren
