Tag Archive for 'Flex'

ActionScript 3 Preloader mit Framefactory

English: The following article describes the ActionScript 3 metadata framefactory and its usage for creating a preloader.

Deutsch: Zahlreiche Wege führen zu einer Flash-Anwendung. Und der Weg über reinen Code ganz ohne Zeitleiste erfreut sich dabei zunehmender Beliebtheit – zumal mit dem Flash Development Toolkit (FDT) und dem Flex Builder zwei Eclipse basierte Entwicklungsumgebungen bereitstehen, die dem im Flash enthaltenen Editor Lichtjahre voraus sind. Doch diese Herangehensweise hat auch ein paar Tücken. Eine davon ist der Preloader, der bei größeren Anwendungen den Ladeprozess ansprechend visualisiert.

In klassischen Flash-Anwendungen wird vielfach die Zeitleiste für den Preloader missbraucht, indem am Anfang die Wiedergabe stoppt, bis der restliche Inhalt geladen ist – dafür muss natürlich sichergestellt sein, dass so viel Inhalt wie möglich erst in den späteren Bereichen der SWF-Datei liegt (was sich übrigens gut mit dem Bandbreiten-Profiler in Flash prüfen lässt). So ganz ohne Zeitleiste klappt das mit FDT oder dem Flex Builder natürlich erst einmal nicht. Doch ein Blick in das Flex Framework zeigt, dass dort eine Lösung namens Framefactory exisitert. Denn das Metadata [Frame(factoryClass="Class")] erlaubt es, Code explizit an den Anfang der SWF-Datei zu legen und diesen z. B. für einen Preloader zu nutzen, bevor der restliche davon unabhängige Inhalt geladen wird.

1
2
3
4
5
6
7
package {
	import flash.display.MovieClip;
	[Frame(factoryClass="biz.wolter.app.manager.SystemManager")]
	[SWF(width="800", height="600", frameRate="24", backgroundColor="#999999", pageTitle="My Rich Application")]
	public class Application extends MovieClip {
	}
}

Die in der Framefactory referenzierte Klasse (hier analog zu Flex der SystemManager) enthält nun allen Code für den Preloader und die Initialisierung der Anwendung. Letzteres darf aber nicht durch eine „konkrete“ Referenzierung erfolgen, da ja dann der zugehörige Code mit dem SystemManager an den Anfang der SWF-Datei gepackt würde. Deshalb kommt hier nach einem erfolgreichen Ladevorgang die Methode getDefinitionByName zum Einsatz.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package biz.wolter.app.manager {
	import biz.wolter.app.controls.Preloader;
 
	import flash.display.DisplayObject;
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.utils.getDefinitionByName;
 
	public class SystemManager extends MovieClip {
 
		public function SystemManager() {
			stop();
			stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
			// Custom Preloader
			Preloader.show();
		}
 
		/*
		 * Handle the loading progress
		 */
		public function onEnterFrame(event:Event):void {
			if(framesLoaded == totalFrames) {
				stage.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
				Preloader.hide();
				nextFrame();
				create();
			} else {
				// nothing, cause Preloader handles itself
			}
		}
 
		/*
		 * Finally create the application
		 */
		private function create():void {
			var mainClass:Class = Class(getDefinitionByName("Application"));
			var app:Object = new mainClass();
			addChildAt(app as DisplayObject,0);
		}
	}
}

Wie erkenne ich, ob eine Schrift eingebettet ist?

English: The following article describes how you can quickly detect the usage of systemfonts or embedded fonts in AIR, Flash or Flex without the need of analysing the whole sourcecode.

Deutsch: Texte werden in Rich Applications (z. B. mit AIR, Flash oder Flex) normalerweise entweder mit Systemschriften oder durch eingebettete Schriften systemunabhängig dargestellt. Beide Varianten haben Ihre Vor- und Nachteile beispielsweise hinsichtlich Darstellungsqualität und Dateigröße. Mit bloßem Auge ist in einer fertigen Anwendung jedoch leider kaum erkennbar, um welche Variante es sich handelt. Und die Suche im Quellcode gestaltet sich oft wie die Suche nach der Nadel im Heuhaufen – gerade bei modularen Anwendungen, bei denen nachträglich geladene Inhalte auf Schriftkonturen der Hauptanwendung zurückgreifen sollten. Glücklicherweise gibt es jedoch einen kleinen Trick, der die Suche erleichtert. Denn ein weiterer wesentlicher Unterschied zwischen Systemschriften und eingebetteten Schriften ist, dass sich Systemschriften nicht transformieren lassen. Es reicht bereits aus, den betreffenden Inhalt (der Einfachheit halber am besten gleich die ganze Anwendung) minimal zu drehen (rotation) und schon werden Systemschriften nicht mehr dargestellt. Dies kann man sich somit zu Nutze machen, um bei einer vorhandenen Anwendung schnell zu erkennen, wo es sich um Systemschriften oder eingebettete Schriften handelt.

Vortrag auf der Konferenz NRW 08

Am 12. September findet in der Börse Wuppertal die Konferenz NRW 08 statt. Veranstaltet wird das Ganze unter anderem von Daniel Fischer. Daniel ist nicht nur für sein Fachwissen rund um WCF (Windows Communication Foundation) sondern auch als Leiter der .NET-Entwickler-User-Group Niederrhein und als Vorstand der JustCommunity e. V. bekannt. Es freut mich sehr, dass ich auf der Nachfolgeveranstaltung des erfolgreichen “.NET Summit NRW” einem Vortrag zum Thema Rich Applications halten darf. Der Schwerpunkt liegt dabei auf dem “Designer und Developer Workflow” mit Adobe Flash und Flex. Aber auch eine Abgrenzung zu Silverlight darf in diesem Umfeld natürlich nicht fehlen. Über Vorschläge zum Inhalt und Themenwünsche im Vorfeld freue ich mich wie immer sehr…

Feedback zur Webinale 2008

Leider bekommt man viel zu selten eine Rückmeldung zu Vorträgen und Workshops. Schon gar nicht wenn die gut gelungen sind. Und so freue ich mich sehr darüber, dass der Flex Workshop auf der Webinale laut Veranstalter hinsichtlich Kompetenz mit einer Eins und einer Gesamtnote von 1,4 bewertet wurde. Mein Dank geht dabei an die Teilnehmer – nicht nur für die tolle Bewertung sondern auch für die vielen netten Gespräche und Emails - sowie an Maike Stensland und Felix Schrader für die hervorragende Organisation. So macht das Ganze gleich noch mehr Spaß. Und nun hoffe ich, dass ich das nächstes Jahr auf der Webinale 2009 noch toppen kann! Übrigens: Die Folien des Vortrags finden sich hier.

ActionScript 3 Praxis DVD: Was soll drin sein?

Das nächste große Projekt behandelt das Thema ActionScript 3 in allen Facetten von AIR über Flash bis Flex. In diesem Training werden der renommierte Flash-Entwickler Saban Ünlü und meine Wenigkeit nützliche wiederverwendbare Code-Schnipsel bis hin zu umfangreichen Best Practices-Empfehlungen für große Projekte bieten. Da sich dieses Training gerade dadurch auszeichnet, dass es Beispiele aus der Praxis für die Praxis bietet, sind Vorschläge zu den Themen ausdrücklich gewünscht: Entweder direkt per Email an mich oder als Kommentar hier im Blog.