Nach mehr als einem Jahr gibt es jetzt eine neue Version der Wallpaper Klasse.
Die Wallpaper Klasse soll es Flash Designern ohne große ActionScript-Erfahrung ermöglichen, miteinander kommunizierende Banner zu produzieren. Mehr Informationen über die Vorteile und Möglichkeiten der Klasse gibt es in den Blog-Einträgen zu Version 0.2 und Version 0.3.
Ich habe die komplette Klasse jetzt von grundauf neu geschrieben, um endlich das zu erreichen, was Daniel und ich von Anfang an als Ziel hatten: eine unbegrenzte Anzahl von swfs über LocalConnection miteinander kommunizieren zu lassen. Dabei sollte die Klasse nach wie vor einfach zu handhaben sein - auch für "Nicht-Programmierer". Deshalb wurde die bekannte Syntax aus Version 0.3 für die Kommunikation von zwei swfs auch beibehalten:
Actionscript:
-
var skyscraper:Object;
-
-
function onConnected(otherSWF:Object):Void
-
{
-
skyscraper = otherSWF;
-
skyscraper.gotoAndPlay(2);
-
}
-
-
Wallpaper.connect(this);
Für die Kommunikation mit mehreren swfs ist etwas mehr Tipparbeit notwendig:
Actionscript:
-
Wallpaper.setup("leftSky", "superBanner", "rightSky");
-
function onConnected():Void
-
{
-
Wallpaper.ALL.gotoAndPlay(2);
-
}
-
Wallpaper.connectAs("superBanner", this);
Als erstes wird über Wallpaper.setup() die Wallpaper Klasse für die Kommunikation initialisiert. Die übergebenen Namen sind frei wählbar, müssen aber in allen kommunizierenden swfs identisch sein. Dann wird wie gewohnt die onConnected Callback Funktion definiert. Sie wird von Wallpaper aufgerufen, sobald alle beteiligten swfs eine Verbindung aufbauen konnten. Zu guter Letzt startet man die Verbindung mit der Methode Wallpaper.connectAs(), der ein Verbindungsname und eine Zeitleiste/ein MovieClip übergeben wird. Der Verbindungsname muss einer der zuvor an Wallpaper.setup() übergebenen sein. Das war schon alles, was für eine Kommunikation zwischen drei swfs notwendig ist.
Das Beispiel zeigt ein weiteres neues Feature von Version 1.0: über Wallpaper.ALL kann man Funktionen in allen verbundenen swfs gleichzeitig aufrufen. Im Beispiel werden alle drei swfs in Frame 2 springen und abspielen.
Wenn die Methoden Wallpaper.setup() und Wallpaper.connectAs() benutzt werden, wird der Callback Funktion onConnected() kein Wert übergeben. Man muss also eine Möglichkeit haben, einzelne swfs in irgendeiner Form anzusprechen. Das bietet die Methode Wallpaper.getObjectByName(). Ihr wird einer der zuvor mit Wallpaper.setup() registrierten Verbindungsnamen übergeben und gibt eine Referenz auf die Verbindung zurück. Über diese Referenz können dann wie gewohnt Funktionen im verbundenen swf aufgerufen werden. Hier ist das Beispiel von oben, mit zwei Variablen, die die Referenzen auf die anderen verbundenen swfs speichern:
Actionscript:
-
Wallpaper.setup("leftSky", "superBanner", "rightSky");
-
var leftSky:Object = Wallpaper.getObjectByName("leftSky");
-
var rightSky:Object = Wallpaper.getObjectByName("rightSky");
-
function onConnected():Void
-
{
-
Wallpaper.ALL.gotoAndPlay(2);
-
}
-
Wallpaper.connectAs("superBanner", this);
Über die Variablennamen kann man zu einem späteren Zeitpunkt einfach Funktionen in einem verbundenen swf aufrufen:
Die Referenzen können zwar direkt nach dem Aufruf von Wallpaper.setup() Variablen zugewiesen werden, der Aufruf von Funktionen ist aber erst sicher, nachdem onConnected() aufgerufen wurde.
Aufgrund der erweiterten Möglichkeiten ist die Klasse jetzt etwa um etwa 700 Bytes gewachsen, aber mit ca. 1600 Byte sollte sie auch für knebelnde Vermarkter KB-Vorgaben brauchbar sein.
Im zip findet ihr neben der Klasse (natürlich in ActionScript 1 und ActionScript 2) und den üblichen Einsatzbeispielen jetzt auch ein pdf mit einer kurzen Dokumentation der Klasse.
Wie immer freuen wir uns über Anregungen, Kritik und Lob.
Download:
Wallpaper v1.0 (zip, 346.94 KB)
Wallpaper v1.0.1
Wallpaper v1.0.1b(Wichtiges Bugfix! zip, 332 KB)