Wallpaper, Hockeysticks, Tandem-Banner …
Jaja, welcher Flasher möchte nicht täglich großartige Sites erstellen, auf FWA gelistet sein und bei FlashForward kräftig absahnen? Aber der Alltag sieht für viele von uns leider etwas anders aus: Werbemittel. Jemand noch keine Bannerkampagne umgesetzt?
Immer beliebter werden die sogenannten Wallpaper, Hockeysticks oder Tandem-Banner. Allen gemein ist die Tatsache, dass zwei swfs miteinander kommunizieren. Um nicht auf externe Scripts zugreifen zu müssen wird die Kommunikation meistens über LocalConnection realisiert ... und das bereitet "Nicht-Action-Scriptern" häufig Probleme. Selbst eingefleischte Coder bevorzugen unterschiedlich Implementierungen, die mal mehr, mal weniger gut sind.
Ein häufiges Problem: ein Wallpaper kann nicht mehrfach gleichzeitig auf einem Rechner laufen (selbst in unterschiedlichen Browserfenstern), weil der LocalConnection-Kanal bereits belegt ist. Außerdem ist die Programmierung der Kommunikation über LocalConnection etwas ... naja ... umständlich.
Um die Erstellung von Wallpapern zu vereinfachen, und die Kanal-Belegung zu umgehen, haben Daniel Schüßler und ich eine kleines Script geschrieben, das die "schmutzige Arbeit" übernimmt. Das Script liegt in einer ActionScript 1 und ActionScript 2 Version vor, und die Anwendung ist denkbar einfach.
AS1:
-
#include "Wallpaper_as1.as"
-
-
function onConnected(otherSWF)
-
{
-
this.otherSWF = otherSWF;
-
otherSWF.gotoAndPlay(2);
-
this.play();
-
}
-
Wallpaper.connect(this);
-
this.stop();
AS2:
-
var otherSWF:Object;
-
-
function onConnected(otherSWF:Object):Void
-
{
-
this.otherSWF = otherSWF;
-
otherSWF.gotoAndPlay(2);
-
this.play();
-
}
-
Wallpaper.connect(this);
-
this.stop();
Über Wallpaper.connect(this); wird die gesamte LocalConnection gestartet - inklusive der Vergabe einer eindeutigen Kanal-ID. Wenn eine LocalConnection-Verbindung aufgebaut werden konnte, wird die Funktion onConnected(otherSWF) aufgerufen. Über den übergebenen Parameter otherSWF können Funktionen des anderen swf direkt aufgerufen werden. Eigenschaften wie _x oder _alpha können allerdings nicht aufgerufen werden.
Vorteile:
- Einfache Einbindung
- Einfacher Zugriff auf Funktionen des anderen swf
- Mehrere Instanzen des gleichen Wallpapers können auf dem selben Rechner laufen
- SWFs von unterschiedlichen Ad-Servern können miteinander kommunizieren
- Kleine Dateigröße nach Kompilierung (933 Byte)
Ich werde später noch Beispiele und eine kleine Doku posten, aber hier erstmal die "nackte" Klasse ... wie gesagt in AS1 und AS2.
Das Script liegt im Moment in der Version 0.2 vor und Daniel und ich sind dankbar für Verbesserungsvorschläge oder Kritik. Also testet was das Zeug hält.
Update:
Neue Version 1.0 unterstützt Kommunikation zwischen mehr als zwei swfs.
Wallpaper v0.2 (zip, 3,15 KB)
Wallpaper v0.3 (zip, 178,41 KB)
Wallpaper v1.0 (zip, 346.94 KB)
Download: Wallpaper v1.0.1b (Wichtiges Bugfix! zip, 332 KB)
