FDT 3.0 Debugging Tutorial
Seit gestern ist die Enterprise Version von FDT 3.0 in der öffentlichen Beta Phase. Zum Thema Debugging in FDT habe ich ein kleines Tutorial geschrieben (Englisch):
Seit gestern ist die Enterprise Version von FDT 3.0 in der öffentlichen Beta Phase. Zum Thema Debugging in FDT habe ich ein kleines Tutorial geschrieben (Englisch):

In diesem Beitrag möchte ich gerne Tweego vorstellen. Tweego ist (oder besser wird) eine Tweening Engine, die auf der Go ActionScript Animation Platform aufsetzt. Dabei setzt Tweego größtenteils auf die bewährte Fuse Syntax. Also perfekt für komplexe Animationssequenzen. Zusätzlich wird das adaptieren von Fuse Animationen einfach.
Brauchen wir denn überhaupt noch eine Tween Klasse? JA!
Was in AS2 Fuse ist, ist in AS3 Tweener. Wirklich?
Ehrlich gesagt, war ich beim Umstieg auf AS3 etwas erschüttert. Die vorhandenen Tweening Engines (allen voran Tweener) haben mich doch ziemlich enttäuscht. Am meisten stört mich, dass diese für komplexere Animationssequenzen völlig ungeeignet sind.
Entweder besitzen diese gar keine Funktionalität dafür oder man kann Sequenzen für eine Eigenschaft erstellen; meiner Meinung nach kein brauchbares Konzept. Mit Pausen arbeiten ist bei komplexen Sequenzen auch furchtbar. Stellt euch vor man muss die erste von 20 Sequenzen um eine Sekunde verlängern. Folglich müssen 19 weitere Werte angepasst werden. Gerade beim Finetuning dann sehr aufwändig.
Darüberhinaus stören mich dann noch einige Details und Dinge, die nicht zu Ende gedacht wurden.
Die logische Konsequenz: Eine eigene Engine…
Jeder, der mit AS2 arbeitet, kennt die Scope Probleme und wird früher oder später zwangsläufig mit einer Delegate Klasse arbeiten.
addEventListener(Event.EVENT, Delegate.create(this, onEvent));
Die Delegate Klasse gibt eine Funktion zurück, die auf die entsprechende Methode verweist. Problematisch wird das, wenn man beispielsweise den Event Listener wieder entfernen möchte. Hier bin ich üblicherweise hingegangen und habe mit einer Instanzvariable gearbeitet:
private var delegate:Function;
...
delegate = Delegate.create(this, onEvent);
addEventListener(Event.EVENT, delegate);
removeEventListener(Event.EVENT, delegate);
Aber man lernt ja nie aus und gestern bin ich auf einen interessanten Lösungsansatz gestoßen. Und zwar kann man einfach die Methode mit ihrem Delegate überschreiben und anschließend die Methode quasi direkt ansprechen. Leider ist dieser Ansatz nicht ganz sauber, aber von der Anwendung doch eine feine Sache.
public function destroy():Void
{
button.removeEventListener(Event.EVENT, onEvent);
}
private function init():Void
{
// Methode überschreiben
onEvent = Delegate.create(this, onEvent);
button.addEventListener(Event.EVENT, onEvent);
}
private function onEvent(e:Event):Void
{
}
Da kommt ja fast AS3 Feeling auf. Also danke für den Tipp!

Die mittlerweile weit verbreitete SWFAddress Library ist in einer neuen Version erschienen. Mit diesem Tool von Asual ist es möglich aus Flash heraus die Adressleiste der Seite zu manipulieren, was für Deeplinks sehr sinnvoll ist. So ermöglicht man dem User beispielsweise mit den Browserpfeilen zu navigieren und Bookmarks zu setzen, was ein Mehrwert für die meisten Seiten darstellen dürfte.
Neben vielen kleinen Änderungen und Optimierungen, gibt es jetzt auch eine AS3 Version mit besserer Event-Struktur. Auch schön sind Methoden um ohne weitere Programmierarbeit durch den Verlauf zu steuern. SWFAddress 2.0 ist zu SWFObject 2.0 kompatibel, was sich momentan allerdings noch in der Beta Phase befindet.

Für außergewöhnliche Entwicklungen ist Joa ja bekannt, entsprechend ist auch sein neustes Projekt wieder sehr beeindruckend.
Er entwickelt ein Tool, mit dem es auf einfache Weise möglich wird direkt im ActionScript Code Assembler Anweisungen zu platzieren. Aktuell gibt es die erste öffentliche Preview von AS3C, die absolut sehenswert ist.
In den nächsten Tagen wird Jens einige Beiträge zum Thema ActionScript 3 in Verbindung mit dem Eclipse-Plugin FDT veröffentlichen.
Wer sich also bisher noch nicht an FDT herangetraut hat, sollte diese Gelegenheit nutzen. Ich verspreche, dass jeder dadurch ein besserer Programmierer werden kann. Wer dazu noch gut aufpasst, kann als Krönung am Ende auch noch tolle Preise gewinnen.

Zugegebenermaßen komme ich mal wieder viel zu selten zum Bloggen, aber für diese Nachricht muss ich mir dann doch ein Moment Zeit nehmen:
FDT 3.0 ist endlich aus der Beta Phase und entsprechend ist seit heute auch die neue Seite dazu online. FDT wird es zukünftig in drei verschiedenen Varianten geben, wobei die Basic oder Professional Version für die meisten User ausreichen sollte. Die geplante Enterprise Version wird neben einem Debugger auch weitere Refactoring Möglichkeiten haben. Darauf bin ich auch schon sehr gespannt.
Aber alles Weitere gibt es hier:
FDT Seite »

In meinem ersten Beitrag zu diesem Thema habe ich verschiedene Methoden aufgegriffen, die Suchmaschinenoptimierung in Verbindung mit Flash ermöglichen. Dort habe ich auch das SWFAddress Beispiel erwähnt, das damals noch auf Cloaking setze. Gestern schrieb mich Rostislav Hristov von Asual an und informierte mich über die neue Variante. Man setzt jetzt auch nicht mehr auf Cloaking, sondern auf eine erweitere Version der JavaScript Weiterleitung.
Zunächst muss ich aber etwas ausholen und erklären, warum diese überhaupt nötig ist. Denn es wäre genau so möglich ohne Weiterleitung zu arbeiten und auf den jeweiligen Unterseiten mit alternativem Inhalt jeweils den Flash Inhalt einzubinden. Das Problem dabei ist, dass man teilweise sehr unschöne Adressen bekommt. Geht man direkt auf die Seite, ist das alles kein Problem (z.B. www.seite.de/#/a/b/). Aber kommt man jetzt über die Suchmaschine und möchte auf der angewählten Seite bleiben, so hätte man beispielsweise schon folgende Adresse: www.seite.de/a/b.html#/a/b. Navigiert man entsprechend auf der Flash Seite weiter, bleibt der erste Teil natürlich unverändert. Das Ganze überlegte ich mir damals auch, kam jedoch für mich nicht in Frage. Wenn einen das nicht stört und vorausgesetzt das »versteckte« Einbinden von Alternativ Inhalt (i.d.R. per SWFObject) stellt keinen Richtlinien Verstoß da, ist diese Variante natürlich recht gut. (BLITZ setzt auch auf diese Variante.)
Bei Asual geht man mittlerweile einem ähnlichen Ansatz nach, möchte aber auch nicht auf eine sauber formatierte Adressleiste verzichten. Diese ist aber leider nur über Cloaking oder eine Weiterleitung möglich. Man macht jetzt folgendes: Die Seiten, die über die Suchmaschinen erreicht werden, haben jetzt auch den Flash Inhalt mit entsprechendem alternativen Text. Dort wird dann per Ajax ein Session Wert gesetzt und anschließend zur Hauptseite (ebenfalls per JS) weitergeleitet, wo anhand dieses Wertes exakt der gleiche Inhalt dargestellt wird. Jetzt ist man jedoch nicht mehr auf der Unterseite und die Adresse kann schön formatiert werden.
Ich finde diese Variante recht gut, denn der User wird definitiv nicht fehlgeleitet, es ist ja 1:1 der identische Inhalt. Ob die Suchmaschinen und speziell Google das so sehen, ist natürlich offen. In diesem Fall sehe ich aber weniger das Problem bei der Weiterleitung, sondern vielmehr bei der Bereitstellung von Alternativinhalt, der eben für User mit Flash nicht einsehbar ist, also eben versteckter Inhalt. Diese Thematik habe ich ja aber schon im ersten Beitrag aufgegriffen. Setzt man mal voraus, dass versteckter Alternativinhalt so in Ordnung ist, dann dürfte einem die neue Asual Variante durchaus gefallen, wenn man a) sauber formatierte Adressen möchte und b) dem User direkt die Flash Seite zugänglich machen möchte, wenn er über die Suchmaschinen kommt.
Meinungen sind natürlich willkommen, auch gerne an Rostislav und die Jungs von Asual.

Nach langem Warten ist sie endlich da: Die neue FDT Version mit AS3 Support! Aber auch ansonsten hat sich einiges getan und vieles wurde weiter verbessert. Aktuell ist FDT jedoch noch in der Beta Phase und es kann noch zu kleineren Problemen kommen, aber in den letzten Wochen hat sich viel getan und die aktuelle Version läuft schon sehr rund. Da haben die Powerflasher (und speziell Arne Deutsch) gute Arbeit geleistet!
Im Folgenden die Haupt-Features im Überblick (Englisch):
AS3 support
Formatter
SWC browsing
Linked UI
Annotations everywhere
Wildcards in quick views
Configurable problems
New Quick Fixes
Better Autocompletion
Relative linked libraries
Enhanced AS2/AS3 parser