Anzeige
Tutorialbeschreibung

Text ein- und ausfaden mit Actionscript

Text ein- und ausfaden mit Actionscript

Version: ab Flash MX
Niveau: Einsteiger
Vorkenntnisse: Grundlagen Flash, Grundlagen Actionscript (attachMovie, Schleifen, enterFrame, Funktionen, Arrays, setInterval)
Lernziele: Texteffekte skripten lernen

Zwar kann man mit der Zeitleiste zahlreiche Texteffekte realisieren, doch hat diese Methode den Nachteil geringerer Flexibilität und sie vergrößert die Datei im Vergleich zu einer rein geskripteten Vorgehensweise. Daher wollen wir in unserem Workshop beliebigen Text mit Actionscript ein- und ausfaden.

Es gibt für unsere Aufgabenstellung wie immer zahlreiche Varianten. Wir wählen eine skripttechnisch zwar nicht optimale, aber darum leichter nachvollziehbare Version. Optimierungsmöglichkeiten werden am Ende des Workshops angesprochen.

  1. Erstellen Sie einen neuen Film (800x600, schwarz, 18 Bps).
  2. In der „Ebene 1“ erstellen Sie ein dynamisches Textfeld namens „buchst“ (Comic Sans M, 24, weiß, nicht auswählbar, einzeilig).
  3. Wandeln Sie das Textfeld in einen MovieClip namens mc_chars (gleicher Verknüpfungsname, Registrierungspunkt mittig) um.

Dieser MovieClip dient uns als Behälter, der buchstabenweise auf der Bühne eingefügt und eingefaded bzw. ausgefaded wird. Jeder einzelne Buchstabe unseres Textes liegt also in einem eigenen MovieClip. Um einerseits den Text leichter positionieren zu können und andererseits, um nicht mehr benötigte Daten leichter löschen zu können, wollen wir darüber hinaus alle Buchstaben bzw. MovieClips in einen einzigen leeren MovieClip einfügen.

  1. Löschen Sie den MovieClip in der „Ebene 1“, da wir ihn per Skripting einfügen werden.
  2. Benennen Sie die Ebene um in „actions“.
  3. Fügen Sie dort folgendes Skript ein:

function txtEffekt(was, woX, woY) {
   this.createEmptyMovieClip("t", 1);
   t._x = woX;
   t._y = woY;
   t.alpha = 10 ;
   t.scale = 5 ;
   t.derText = was;
   t.tiefe = 1;
   t.aBuchstaben = [];
}
txtEffekt("Hallo Flasher in aller Welt!", 100, 100);

Bevor irgend etwas angezeigt werden kann, müssen bestimmte Vorbereitungen getroffen werden, d.h., es müssen Variablen initialisiert und ein leerer MovieClip erstellt werden. Dazu verwenden wir eine eigene Funktion namens txtEffekt. Wird sie ausgeführt, erzeugt sie auf der Bühne einen leeren MovieClip mit dem Instanznamen „t“, der später die Buchstaben aufnehmen wird. Seine x- und y-Position geben wir beim Funktionsaufruf als Parameter namens woX und woY mit. Gleiches gilt für den Text, der in der Variablen derText gespeichert wird. In alpha speichern wir die Zahl, um die der Alphawert der Buchstaben zwecks Einfaden inkrementiert werden soll. Ähnlich legt scale einen beliebigen Wert fest, der zur Skalierung der Buchstaben dient. Die Tiefe, auf der wir den ersten Buchstaben einblenden wollen, wird mit 1 initialisiert. Das Array aBuchstaben schließlich wird angelegt; es dient später zur Verwaltung der Objekte, die ein- bzw auszublenden sind. Alle Variablen werden dem leeren MovieClip t zugeordnet, so daß sie später, wenn wir sie nicht mehr brauchen, beim Löschen von t ebenfalls verschwinden. Die letzte Zeile ruft die Funktion auf und übergibt dabei die benötigten Parameter.

  1. Erweitern Sie die Funktionsdefinition nach der Einrichtung des Arrays um folgende Zeilen:

t.onEnterFrame = function() {
   this.einblenden();
};

Das Anzeigen der Buchstaben ist eine Aktion, die mehrfach ausgeführt werden muß. Wir benötigen daher ein permanentes Ereignis, also ein enterFrame, das eine noch zu definierende Funktion einblenden() aufruft. Alternativ könnte man auch ein setInterval() verwenden.

  1. Unmittelbar vor diese Ereigniszuweisung fügen Sie die Definition der betreffenden Funktion ein:

t.einblenden = function() {
   t.attachMovie("mc_chars", "c"+t.tiefe, t.tiefe);
   var obj = t["c"+t.tiefe];
   obj.buchst.autoSize = true;
   obj.buchst.text = t.derText.charAt(t.tiefe-1);
   if (t.tiefe>1) {
      obj._x = t["c"+(t.tiefe-1)]._x+t["c"+(t.tiefe-1)]._width+10;
   }
   t.tiefe++;
};

Beim testen ergibt sich ein einfacher Schreibmaschineneffekt: sukzessive fügt Flash alle Buchstaben unseres Beispieltextes ein.

Bei jedem Aufruf von einblenden() wird in den MovieClip t unser Buchstabenmovieclip eingefügt. Der Instanzname des neuen Objekts bildet sich aus dem Buchstaben c sowie der Variablen tiefe. Da diese hochgezählt wird, erhalten wir eine fortlaufende Nummerierung aller Instanzen. Als Ebene weisen wir ebenfalls tiefe zu. Der Einfachheit halber speichern wir den aktuellen Instanznamen in der Variablen obj, so daß man nicht jedesmal den umständlicheren Ausdruck t[„c“+tiefe] verwenden muss, um die Instanzen anzusprechen.

Damit sich das Textfeld innerhalb des Buchstabenclips der Größe des nachfolgend zugewiesenen Buchstabens anpasst, setzen wir die Eigenschaft autoSize auf true. Anschließend ermitteln wir den anzuzeigenden Buchstaben. Auch hier bietet sich die Variable tiefe an. Da sie mit 1 initialisiert wurde, die Position eines Zeichens innerhalb eines Strings aber wie beim Array als Indexwert beginnend mit 0 angegeben wird, erhalten wir den richtigen Buchstaben, indem wir von tiefe 1 subtrahieren. Beispiel: der erste Buchstabe unseres Textes, das „H“, befindet sich auf der Indexposition 0. Anfangs jedoch beträgt tiefe 1. Würden man mit Index 1 auf den text zugreifen, erhielte man das „a“. Also subtrahieren wir einfach 1 von tiefe, was nach Adam Riese 0 ergibt – womit wir dann auch den korrekten Indexwert ermittelt haben.

Die Positionierung innerhalb des MovieClips t ergibt sich aus der Addition der x-Position sowie der Breite des vorherigen Buchstabens, zuzüglich eines beliebig gewählten kleineren Wertes, den man durch Ausprobieren erhalten kann. Da die Instanznamen mit Hilfe von tiefe einfach hochgezählt werden, läßt sich der vorherige Buchstabe problemlos ermitteln. Lediglich der erste Buchstabe fällt aus diesem Schema heraus, da er ja notwendigerweise keinen Vorgänger besitzt. Daher wird diese Positionsberechnung nur dann durchgeführt, wenn tiefe größer als 1 ist, also mindestens der zweite Buchstabe gerade eingeblendet wird. Wenn wir wie hier für den ersten Buchstaben keine Position angeben, weist Flash automatisch der x- und der y-Position die 0 zu. Zum Schluß zählen wir tiefe hoch.

  1. Zwecks einfaden muß zunächst die Funktionsdefinition von einblenden folgendermaßen ergänzt werden (Fettdruck):

t.einblenden = function() {
   t.attachMovie("mc_chars", "c"+t.tiefe, t.tiefe);
   var obj = t["c"+t.tiefe];
   obj._alpha = 0;
   obj.buchst.autoSize = true;
   obj.buchst.text = t.derText.charAt(t.tiefe-1);
   if (t.tiefe>1) {
      obj._x = t["c"+(t.tiefe-1)]._x+t["c"+(t.tiefe-1)]._width+10;
   }
   t.aBuchstaben.push(obj);
   t.tiefe++;
};

Einfaden geht natürlich nur, wenn die Objekte vorher nicht sichtbar waren. Deshalb setzen wir unmittelbar nach dem Einfügen den Alphawert der Buchstabenclips auf 0. Um sie später problemlos ansprechen zu können, wird zusätzlich jeder Clip in dem Array aBuchstaben eingetragen.

  1. Nach dem Ende dieser und vor dem Beginn der Ereigniszuweisung fügen Sie folgende Funktionsdefinition ein:

t.einfaden = function() {
   if (t.aBuchstaben.length>0) {
      for (e in t.aBuchstaben) {
         if (t.aBuchstaben[e]._alpha<100) {
            t.aBuchstaben[e]._alpha += t.alpha;
            t.aBuchstaben[e]._xscale += t.scale;
            t.aBuchstaben[e]._yscale += t.scale;
         }
      }
   }
};

Sobald aBuchstaben ein Element enthält, also seine Länge größer 0 ist, werden alle Elemente mit einer for in-Schleife angesprochen. Dabei fragen wir ab, ob das betreffende Element, also die Instanz, die einen Buchstaben darstellt, einen Alphawert unter 100 besitzt. Falls ja, inkrementieren wir jeweils die Eigenschaften _alpha, _xscale sowie _yscale um die in unseren Variablen definierten Werte. Mit _xscale bzw. _yscale ist die Skalierung eines Objektes in X- und Y-Richtung gemeint.

  1. Um auch tatsächlich etwas beobachten zu können, bedarf es noch des Aufrufs der Funktion. Ergänzen Sie daher entsprechend die Zuweisung des enterFrame-Ereignisses:

this.einfaden();

Bei einem Test müssten jetzt die Buchstaben eingefaded werden. Testen Sie mit verschiedenen Werten für t.alpha und t.scale, bis Sie mit dem Ergebnis zufrieden sind.

Im aktuellen Zustand funktioniert das Skript zwar schon, aber es ist noch recht unsauber: mangels gegenteiliger Anweisung fügt Flash auch dann noch Clips für Buchstaben ein, wenn der Text längst vollständig angezeigt wird. Außerdem wird die einfaden-Funktion endlos ausgeführt. Es fehlt also eine Anweisung für den Fall, daß die Animation den erwünschte Endzustand erreicht hat.

  1. Erweitern Sie daher die einblenden-Funktion unmittelbar am Anfang um eine Abfrage:  

if (t.tiefe>t.derText.length) {
   return;
}

Damit legen wir fest, daß die folgenden Zeilen, die für ein Einfügen der Buchstabenclips sorgen, nur dann ausgeführt werden, wenn die Variable tiefe kleiner oder gleich der Gesamtlänge des Textes, d.h. der Anzahl an Zeichen ist. Wenn unser Text beispielsweise 15 Zeichen einschließlich der Leerzeichen umfasst, stoppt unser Skript, sobald tiefe auf 16 hochgezählt wird. Denn dann trifft die if-Bedingung zu und Flash führt die return-Anweisung aus. Mit return wird ein Skript unmittelbar abgebrochen, was in unserem Fall faktisch das Einfügen stoppt.

  1. Vergleichbar wollen wir die Ausführung des enterFrame-Eereignisses begrenzen. Ergänzen Sie folgende Zeilen (Fettdruck):

t.einfaden = function() {
   if (t.aBuchstaben.length>0) {
      for (e in t.aBuchstaben) {
         if (t.aBuchstaben[e]._alpha<100) {
            t.aBuchstaben[e]._alpha += t.alpha;
            t.aBuchstaben[e]._xscale += t.scale;
            t.aBuchstaben[e]._yscale += t.scale;
         }
      }
      for (e in t.aBuchstaben) {
         if (t.aBuchstaben[e]._alpha<100) {
            return;
         } else {
            delete t.onEnterFrame;
         }
      }
   }
};

Nach dem Inkrementieren der betreffenden Eigenschaften bei allen Buchstabenclips kontrollieren wir, ob irgendeiner der Buchstaben einen Alphawert kleiner 100 hat. Ist das der Fall, verlassen wir die Schleife, denn dann ist klar, es muß noch mindestens ein Clip eingefaded werden. Andernfalls löscht Flash einfach das enterFrame-Ereignis, da es nicht weiter benötigt wird. Alternativ könnte man auch in einem else-Fall der vorhergehenden Schleife eine Variable hochzählen, um die Anzahl der fertigen Buchstabenclips zu ermitteln. Ist sie identisch mit der Gesamtanzahl der Zeichen in unserem Text, dann kann das enterFrame gelöscht werden.

In ähnlicher Weise lassen sich die Clips entsprechend der Reihenfolge des Einblendens wieder löschen.

  1. Erweitern Sie den eben definierten else-Fall wahlweise vor oder nach der delete-Anweisung:

t.tiefe = 1;
intervPause = setInterval(t, "pausen", 1000);

Die Variable tiefe wird wieder mit 1 initialisiert und wir rufen eine noch zu definierende Pausenfunktion auf. Durch die in setInterval() übergebenen Parameter teilen wir Flash mit, daß die Methode pausen zum Objekt t gehört und alle 1000 Millisekunden auszuführen ist. Damit sich das Interval (zumindest theoretisch) wieder löschen läßt, wird es in die Variable intervPause geschrieben.

  1. Fügen Sie nach der Funktionsdefinition von einfaden folgende Definition für pausen ein:

t.pausen = function() {
   t.onEnterFrame = function() {
      this.ausfaden();
      this.tiefe++;
   };
   clearInterval(intervPause);
};

Da das Ausfaden wie das Einfaden permanent erfolgen muß, sorgt die Funktion pausen dafür, daß t ein neues enterFrame-Ereignis erhält. Damit wird ausfaden() andauernd aufgerufen. Da wir die Buchstaben nicht alle auf einmal, sondern sukzessive ausblenden wollen, zählen wir tiefe hoch. Sie wird später dazu dienen, herauszufinden, welche Buchstaben aktuell ausgeblendet werden. Zum Schluß soll clearInterval das intervPause zugeschriebene Interval löschen.

  1. Noch könen wir nichts testen, da die Funktion ausfaden nicht definiert wurde. Schreiben Sie daher nach dem Ende dieses Definitonsblocks:

t.ausfaden = function() {
   for (var i = 0; i<t.tiefe; i++) {
      if (t.aBuchstaben[i]._alpha>0) {
         t.aBuchstaben[i]._alpha -= 10;
         t.aBuchstaben[i]._xscale -= 5;
         t.aBuchstaben[i]._yscale -= 5;
      }
   }
}

Wie beim Einfaden verwenden wir für das Ausfaden das array aBuchstaben. Dort sind alle Buchstabenclips in der Reihenfolge ihres Erscheinens eingetragen. Wenn wir nun frameweise den ersten, dann die ersten beiden, die ersten drei usw. Buchstaben erfassen, können wir den Text in Leserichtung ausblenden. Nichts anderes tut die Schleife, die in Abhängigkeit von tiefe den Alphawert sowie die Größe der Buchstaben ändert. Da tiefe in jedem Frame um 1 inkrementiert wird, haben wir nach kurzer Zeit alle Clips angesprochen.

  1. Zum Schluß leisten wir noch etwas Aufräumarbeit. Ergänzen Sie ausfaden() folgendermaßen (Fettdruck):

t.ausfaden = function() {
   for (var i = 0; i<t.tiefe; i++) {
      if (t.aBuchstaben[i]._alpha>0) {
         t.aBuchstaben[i]._alpha -= 10;
         t.aBuchstaben[i]._xscale -= 5;
         t.aBuchstaben[i]._yscale -= 5;
      }
   }
   for (e in t.aBuchstaben) {
      if (t.aBuchstaben[e]._alpha>0) {
         return;
      } else {
         t.removeMovieClip();
      }
   }
}

Wie beim Einfaden sorgen wir beim Ausfaden dafür, daß nach getaner Arbeit die Objekte, Variablen etc., die nicht mehr benötigt werden, verschwinden. In unserem Fall ist das der MovieClip t selbst, der alle Buchstaben, Variablen und Funktionen enthält, die für den Texteffekt notwendig sind. Die for in-Schleife testet, ob irgend ein Buchstabenclip einen Alphawert größer 0 hat und damit noch sichtbar ist. Solange das der Fall ist, wird die komplette Funktion an dieser Stelle abgebrochen. Andernfalls gelangt Flash in else und löscht alles.

Hier zur Kontrolle noch einmal der vollständige Sourcecode:

function txtEffekt(was, woX, woY) {
   this.createEmptyMovieClip("t", 1);
      t._x = woX;
      t._y = woY;
      t.tiefe = 1;
      t.alpha = 10;
      t.scale = 5;
      t.derText = was;
      t.aBuchstaben = [];
      t.einblenden = function() {
      if (t.tiefe>t.derText.length) {
         return;
      }
      t.attachMovie("mc_chars", "c"+t.tiefe, t.tiefe);
      var obj = t["c"+t.tiefe];
      obj._alpha = 0;
      obj.buchst.autoSize = true;
      obj.buchst.text = t.derText.charAt(t.tiefe-1);
      if (t.tiefe>1) {
         obj._x = t["c"+(t.tiefe-1)]._x+t["c"+(t.tiefe-1)]._width+10;
      }
      t.aBuchstaben.push(obj);
      t.tiefe++;
   };
   t.einfaden = function() {
      if (t.aBuchstaben.length>0) {
         for (e in t.aBuchstaben) {
            if (t.aBuchstaben[e]._alpha<100) {
               t.aBuchstaben[e]._alpha += t.alpha;
               t.aBuchstaben[e]._xscale += t.scale;
               t.aBuchstaben[e]._yscale += t.scale;
            }
         }
         for (e in t.aBuchstaben) {
            if (t.aBuchstaben[e]._alpha<100) {
               return;
            } else {
               delete t.onEnterFrame;
               t.tiefe = 1;
               intervPause = setInterval(t, "pausen", 1000);
            }
         }
      }
   };
   t.pausen = function() {
   t.onEnterFrame = function() {
      this.ausfaden();
      this.tiefe++;
   };
   clearInterval(intervPause);
   };
   t.ausfaden = function() {
      for (var i = 0; i<t.tiefe; i++) {
         if (t.aBuchstaben[i]._alpha>0) {
            t.aBuchstaben[i]._alpha -= 10;
            t.aBuchstaben[i]._xscale -= 5;
            t.aBuchstaben[i]._yscale -= 5;
         }
      }
      for (e in t.aBuchstaben) {
         if (t.aBuchstaben[e]._alpha>0) {
            return;
         } else {
            t.removeMovieClip();
         }
      }
   }
   t.onEnterFrame = function() {
      this.einblenden();
      this.einfaden();
   };
}
txtEffekt("Hallo Flasher in aller Welt!", 100, 100);

Optimierungsmöglichkeiten: von dieser Lösung ausgehend könnte man statt des enterFrames mit setInterval arbeiten. Das hätte den Vorteil, das die Ausführung unabhängig von jedem Zielrechner überall gleich schnell ist. Zudem könnte man damit das Tempo der Animation recht einfach steuern. Außerdem könnte man die benötigten Textfelder zur Laufzeit mit new Textfield erzeugen anstatt auf ein bereits vorher erstelltes Textfeld zurück zu greifen. Das hätte den Vorteil, daß sich die Animationseigenschaften einfach per Skripting ändern liessen. Last not least ist auch ein Prototype resp. eine Klasse möglich, die den beschriebenen Texteffekt beinhaltet. Dann kann man ihn sehr leicht in jedem beliebigem Flashfilm einsetzen, ohne den Programmcode jedesmal per copy and paste neu einfügen zu müssen.

Zum Schluß eine kleine große Bitte: Alle unsere Tutorials sollen dem Leser helfen, seine Fähigkeiten zu verbessern. Das setzt voraus, daß wir auch wissen, was in unseren Tutorials gut und was weniger gut (klingt angenehmer als: was nicht gut) ist. Kurz: wir brauchen dringend Feedback. Wer z.B. votet, der schreibe bitte auch eine Notiz, warum er welche Punktezahl vergeben hat – dafür im voraus schon mal vielen Dank.

     
     

DVD-Werbung
Kommentare
Achtung: Du kannst den Inhalt erst nach dem Login kommentieren.
Portrait von sh-creations
  • 09.04.2011 - 10:13

Super erklärt.
Zum Auffrischen vom Verständnis bestimmter Actionscript-Befehle ist dieses Tutorial sehr geeignet.
Mir hat es sehr geholfen.
Danke!

Portrait von WebDiver_09
  • 29.08.2010 - 17:31

Genau sowas hatte ich grad gesucht. Super, Danke!

Portrait von hasturfog
  • 06.02.2010 - 13:31

hat mir super weiter geholfen. nur weiter so leute.

Portrait von arimano
  • 14.01.2010 - 13:11

Hast du aber ein ganz schönes Monster zusammengeskriptet :D...
da ich keine Lust auf die Erklärungen hatte habich mir nur den Sourcecode durchgelesen... ^^.
aber für anfänger vllt. bisschen viel auf einma... ach ja an alle die immer so auf bildchen stehn: Was gibt es denn bei einem AS-tut anderes zu erwarten als Text?? dies ist eine Programmiersprache un kein klickibunti WYSIWYG...
;)

Portrait von labelsound
  • 15.11.2009 - 18:31

Sehr ausführlich, aber auch etwas kompliziert. Musste es viermal lesen.

Portrait von RARESven
  • 12.10.2009 - 12:50

Super Erklärt! Danke man! :D

Portrait von Hiero
  • 03.03.2009 - 00:02

trockener gehts ja wohl gar nicht!

Portrait von softy2404
  • 02.02.2009 - 14:41

ich muss sagen ich bin eigentlich nicht auf dem Kopf gefallen, aber ich finde es für so ein script. zu viel drum rum geredet und auch noch in einem fach chinesisch :P

würde bestimmt auch einfacher gehen

Portrait von softy2404
  • 02.02.2009 - 14:40

ich muss sagen ich bin eigentlich nicht auf dem Kopf gefallen, aber ich finde es für so ein script. zu viel drum rum geredet und auch noch in einem fach chinesisch :P

würde bestimmt auch einfacher gehen

Portrait von jannik
  • 13.06.2008 - 09:39

ziemlich kompliziert.....
habe zum verständnis den code mal kopiert (nach den Vorbereitungen wie es im Tut steht) hab ich es nicht zum laufen bekommen.

Man sollte doch mehr bebilderte beispiele bringen da der Mensch nunmal besser lernt wenn er dies in anschaulichen Bildern präsentiert bekommt.

Alternative Portrait

-versteckt-(Autor hat Seite verlassen)

  • 14.03.2008 - 18:19

ganz nett aber ziemlich umständlich

Alternative Portrait

-versteckt-(Autor hat Seite verlassen)

  • 14.09.2006 - 19:59

ist recht nützlich aber ich finde es bisschen kompliziert erklärt....

Portrait von voltan2
  • 22.04.2006 - 17:25

Es gibt in Flash einfachere Möglichkeiten solches hinzubekommen.

Portrait von aaaaldi
  • 27.02.2006 - 18:31

für so eine leichte Animation ist es etwas lang! :(

Portrait von Raversound20
  • 30.01.2006 - 15:49

ein bisschen kompliziert....

Alternative Portrait

-versteckt-(Autor hat Seite verlassen)

  • 03.12.2005 - 21:06

ich habe es nicht wirklich geschnallt<br>
bin halt ein bissel dösig:-)

Alternative Portrait

-versteckt-(Autor hat Seite verlassen)

  • 21.11.2005 - 12:44

Ich denke das so ein Tutorial, an dem was Leute von Flash wollen ziemlich vorbeigeht. Deswegen habe ich nur einen Stern vergeben.<br>
Zu meiner Bewertung:<br>
h_seldon liefert hier eine sehr gute Programmierung ab, das kann man nicht anders sagen. <br>
Für jemanden der Einblick in modernes Scripting bekommen will ist das echt ganz gut.<br>
Dennoch bleibt die Frage, wer jemals einen so simplen Effekt in dieser Form programmieren würde. Ich denke wenn man als Anfänger so beginnt und bei dieser Form bleiben würde, wäre es auf die Dauer sehr schwer z.B. einen Auftrag zu bekommen, da der Realisierungszeitraum zzu groß wäre.<br>
Flash als native Darstellungsform im Medienbereich lebt ja nicht vom Scripting sondern durch die Kombination von Form Farbe und Animation. Da gibt es sehr sehr viele Hilfsfmittel dazu, die dem Anfänger ja auch nur dann etwas nutzen wenn denn die kreative Idee da ist.<br>
So ein Beispiel wie dieses würde mich als Anfänger total abschrecken, erreiche ich doch fast nichts mit Riesenaufwand. <br>
<br>
Ein Nachteil der genannten Lösung wäre noch, das durch den variablen Text alle Kurvenformen der Buchstaben mit in das Flash eingebettet werden müssen und so die Größe auf ca. 22k ansteigt.<br>
<br>
Mit einfacheren Tools wäre das mit besseren Ergebnissen zum fünftel der größe möglich.<br>
<br>
Gruß<br>
<br>
TID<br>
<br>
@h_seldon: Wirklich kein persönlicher Angriff, toll programmiert, ich als Spaggehti-Coder wäre da wieder nicht so drangegangen.

Portrait von h_seldon
  • 21.11.2005 - 13:59

Hallo TID,<br>
<br>
1. vielen Dank für Deinen Kommentar. So kann ich besser einschätzen, was ok war und was nicht, als wenn Du nur irgendwelche Punkte vergeben hättest.<br>
2. die Programmierung ist zwar aufwendiger als reine Tween-Lösungen, hat aber den Vorteil, auch flexibler zu sein. Wenn ich den Effekt mehr als einmal verwende, lohnt sich der Aufwand, weil ich in der Zeitleiste absolut nichts einstellen bzw. anlegen muß. Deswegen wird man auch gerade auf Dauer mit solcher Arbeit Aufträge bekommen können, weil man bei späteren Projekten schneller ist. Insofern bietet sich ein solches Vorgehen für kommerzielles Arbeiten an, wer aber nur "aus Spaß an der Freud'" mit Flash bastelt, für den ist es sicher etwas zu viel.<br>
3. einbetten muß man natürlich nur die Buchstaben, die auch verwendet werden, im aktuellen Beispiel ist der Film damit 3 kb groß, nicht aber 22 kb.<br>
4. Diese Lösung kann ich auch einem Kunden anbieten, der seine Seite selbst pflegen möchte, z.B., indem er die Effekte anpassen kann. Der Text läßt sich extern einlesen und funktioniert dann, ohne daß der Kunde Flash besitzen muß und in der fla "herumpfuschen" kann.<br>
5. Ob Flash nun, überspitzt formuliert, besser als Animations- oder als Scriptingtool eingesetzt wird, ist eine grundlegende Frage, auf die es keine optimale Antwort gibt. Es kommt immer auf den Zweck an, den man erreichen möchte. Immerhin: wenn man sich die Entwicklung von Flash als nettes Programm zum Erstellen von Intros hin zu einer Entwicklungsplattform mit OOP-Ansätzen anschaut, dann scheint aus Sicht des Herstellers doch eine Tendenz Richtung Programmierung zu bestehen. Darauf deuten auch die RIA (Rich Internet Applications) hin, die laut Macromedia ja gerade mit Flash entwickelt werden sollten - was wiederum nur mit Scripting klappt. Zudem ist AS seit Flash MX mit jeder Version um eine Variante erweitert worden, also erheblich stärker ausgearbeitet worden als die grafischen Möglichkeiten des Programms. Selbst die Version 8, die wirklich einige Schmankerl für Designer bietet, baut genau diese Features (mit erweiterten Möglichkeiten) ins Skripting ein. Und mit der Anbindung an Eclipse schnuppert man sogar in den Bereich der professionellen Softwareentwicklung hinein (Eclipse ist eine open source IDE für Java).<br>
6. Es mag leider schon so sein, daß sich Anfänger von einem derartigen Script abschrecken lassen. Da müsste ich fairerweise in meinen Tutorials nicht einfach "Anfänger", sondern "Actionscript-Anfänger" eintragen. Immerhin steht im Titel der Tuts jeweils der Bezug zu Actionscript drin, so daß die Zielrichtung schon etwas klarer wird. Apropos "Actionscript-Anfänger": das ist in der Tat das Anfänger-Niveau in meinem Skripting-Unterricht, zugegebenermaßen anstrengend, aber meine Kursteilnehmer lernen doch 'ne Menge.<br>
7. keine Angst, niemand kann Deine vernünftige, nachvollziehbare Kritik als persönlichen Angriff mißverstehen. Ich finde es in dieser offenen Form erheblich besser als wenn jemand denkt "was für ein blödes Tutorial" und dann enttäuscht von dannen zieht.<br>
<br>
viele grüße

x
×
×