Tag Archive for 'Flash'

Tipp Flash CS4: ActionScript Vector und Compiler-Konstanten

ActionScript ist mit Flash CS4 Professional trotz der in den Medien kursierenden Diskussionen rund um die ActionScript-Basis ECMAScript 4 weiter gewachsen (http://www.flashforum.de/forum/showthread.php?t=257795 und http://blogs.adobe.com/open/2008/08/blog_entry_dated_81408_715_pm.html). Die spektakulärste Neuerung aus Sicht von Programmierern könnte dabei der neue Datentype Vector sein. Dieser erlaubt erstmals typisierte und damit typsichere Listen. Die Verwendung geschieht analog zur Klasse Array. Einzig die Typisierung und das Erstellen bedürfen einer neuen Schreibweise mit Angabe des Typs in spitzen Klammern getrennt durch einen Punkt:

1
2
var v:Vector.<String>;
v = new Vector.<String>();

Zu den Neuerungen gehören außerdem die Klassen rund um Text, Pixel Bender (Codename Hydra), 3D und inverse Kinematik. Außerdem kann man nun Sounds zur Laufzeit erzeugen, primitive Formen leichter mit der Graphics-Klasse zeichnen und Dateien auch aus dem Browser heraus per FileReferenc lokal laden und speichern. Und in der Bibliothek ist endlich sichtbar, ob es sich um einen MovieClip, ein Sprite oder ein mit dem Flex Integration Kit für Flash aufbereitetes Symbol handelt. Bei der Zusammenarbeit mit Flex hilft es außerdem sehr, dass Flash nun endlich auch Metadaten wie AccessibilityClass, ResourceBundle, Style, Embed und SWF versteht – nicht nur in Klassen sogar in Bildskripts. Gerade Embed ist auch in reinen Flash Projekten durchaus nützlich, um Inhalte allein durch die Programmierung und ohne den Umweg über die Bibliothek zu nutzen.
Die Einstellungsmöglichkeiten von ActionScript umfassen nicht mehr nur eine Sammlung von Klassenpfaden sondern sind ähnlich wie bei Flex in Quellcode-Pfade, externe Bibliotheken zur Laufzeit (Runtime Shared Libraries) und Bibliohtekspfade zur Kompilierzeit unterteilt. Hinter den ActionScript-Einstellungen im Register Flash der Einstellungen für das Veröffentlichen im Menü Datei verbergen sich nicht nur die Klassenpfade. Dort können auch Konstanten angelegt werden, die wie normale Variablen in ActionScript zu nutzen sind. Außerdem erlauben diese auch eine bedingte Kompilierung, wenn der relevante Code hinter der Konstante in geschweiften Klammern steht:

1
2
3
4
CONFIG::FLASH_AUTHORING {
	trace("Foo");
}
trace(CONFIG::FLASH_AUTHORING);

Tipp Flash CS4: AIR Projekte erstellen

Wie üblich folgt die neueste Flash Autorenumgebung namens Flash CS4 Professional mit dem Flash Player 10 den Vorgaben der neuesten Laufzeitumgebung. Aber nicht mehr nur der Flash Player ist von Interesse, denn neben dem Small Web Formt (SWF) ist die Ausgabe auch für Adobes Browser unabhängige Laufzeitumgebung AIR (Adobe Integrated Runtime) direkt im Programm zu finden. Es gibt zwei Wege, um ein Projekt in Flash für AIR aufzubereiten. Die erste Variante finden Sie entweder im Startmenü oder über das Menü Datei -> Neu. In beiden Fällen können Sie eine Flash Datei für Adobe AIR anlegen. Sollte jedoch schon ein Projekt existieren und für AIR umgestellt werden, dann müssen Sie die Veröffentlichungseinstellungen verändern und z. B. über das Menü Datei -> Einstellungen für Veröffentlichungen innerhalb des Registers Flash den Player auf „Adobe AIR 1.1“ umstellen. Die weiten Details stellen Sie dann übrigens in den AIR-Einstellungen ein. Diese finden Sie ebenfalls u. a. im Menü Datei.

Drei Stunden Flex Training kostenlos

Für Anwendungen im Internet zählt Flex zur bevorzugten Plattform vieler Agenturen und Auftraggeber. Flex spricht dabei nicht nur Flash Programmierer an. Auch Java-Entwickler kommen dank Eclipse basierter Entwicklungsumgebung schnell zu ansprechenden Ergebnissen. Für alle, die einen schnellen Einstieg suchen, haben wir im Flashforum rund drei Stunden Flex Videos ins Netz gestellt. Wer nach diesem Crashkurs mehr zu Flex erfahren möchte, der findet in meinem neunstündigen Videotraining zu Flex 3 eine grundlegende und umfassende Einführung mit vielen Praxistipps.

Kostenloses Training zu AIR

AIR bringt das Web auf den Desktop: So stehen die Möglichkeiten des Desktops auch für Webtechnologien wie HTML, JavaScript, Flash und Flex zur Verfügung. Und bei Bedarf kommunizieren diese Lightweight Desktop Applications bei bestehender Internetverbindung wie Rich-Internet-Applications (RIA) mit einem entfernten Webserver. Wer mehr darüber wissen möchte, erhält im Flashforum unter http://www.flashforum.de/video-trainings?product_id=119 eine kostenlose Video-Einführung in das Thema. Und wem dieser Teil gefällt, der kann ja auch gleich noch einen Blick auf das zugehörige komplette Flex 3 Training von mir werfen.

Flash Checker, Teil 3: Dokument und Bibliothek

Im ersten und zweiten Teil des Flash Checkers habe ich eine einfache objektorientierte Flash-Erweiterung verfasst, um die Dokumenteneinstellungen einer FLA-Datei zu prüfen. In diesem Teil zeige ich Ihnen, wie Sie auf die Inhalte der Zeitleiste und Bibliothek zugreifen.

Als erstes wird das zu behandelnde Dokument (FLA) benötigt. Entweder man lädt ein Dokument oder man geht über die Liste aller geöffneten Dokumente oder man nimmt wie hier einfach das aktuell in Flash geöffnete und aktive Dokument.

1
var currentDocument = fl.getDocumentDOM();

Die Zeitleiste (bei mehreren Szenen die Zeitleisten) der aktuellen FLA-Datei sind nun über dieses Dokument zugänglich.

1
2
3
for (var i=0; i<currentDocument.timelines.length; i++) {
	var currentTimeline = currentDocument.timelines[i];
}

Und in der Zeitleiste werden die Ebenen verwaltet (zur Erinnerung: Hier wird der Quellcode, also die FLA-Datei, behandelt und nicht die kompilierte SWF-Datei, der diese Ebenen nämlich völlig unbekannt sind).

1
2
3
for (var i=0; i<currentTimeline.layers.length; i++) {
	var currentLayer = currentTimeline.layers[i];
}

Ebenen enthalten Bilder und Schlüsselbilder. Wobei nur in den Schlüsselbildern relevante Informationen abgelegt sind, weshalb in erster Linie diese Schlüsselbilder (Keyframes) interessieren.

1
2
3
4
5
6
7
for (var i=0; i<currentLayer.frames.length; i++) {
	if (currentLayer.frames[i].startFrame == i) {
		var currentKeyframe = currentLayer.frames[i];
	} else {
		continue;
	}
}

In den Schlüsselbildern liegen die Elemente der Anwendung. Mit Hilfe von JSFL (JavaScript für Flash) kann beispielsweise deren Position geprüft werden.

1
2
3
4
5
6
for (var i=0; i<currentFrame.elements.length; i++) {
	var currentElement = currentFrame.elements[i];
	var topfraction = currentElement.top % 1;
	var leftfraction = currentElement.left % 1;
	if (topfraction != 0 || leftfraction != 0) fl.trace("Warning: Position is not snapped to pixels!");
}

Für eine vollständige Prüfung eines Flash-Dokumentes reicht aber die Zeitleiste des Hauptdokuments nicht aus. Denn in der Bibliothek liegen noch viele weitere Inhalte, die überprüft werden müssen. Die Bibliothek ist dabei eine einfache Eigenschaft des Dokuments und verfügt ihrerseits über eine Liste von Inhalten (items).

1
currentDocument.library.items

Diese Inhalte können dann – im Falle von Symbolen wie MovieClips – ähnlich einem Dokument geprüft werden. Anders als ein Dokument haben sie aber nur genau eine Zeitleiste, denn nur Dokumente können in Szenen unterteilt sein.

1
2
3
4
5
for (var i=0; i<currentDocument.library.items.length; i++) {
	if (currentDocument.library.items[i].itemType == "movie clip") {
		var currentTimeline = currentDocument.library.items[i].timeline;
	}
}

Die Komplette Erweiterung können Sie hier im Quellcode oder auch als fertige Flash Extension (MXP) zur einfachen Installation herunterladen.