Application auf Flash Media Server 2

Es gibt einige Beispiele auf der Adobe Seite, leider war da kein einziges, das Flash CS3 (mit AS3) und Flash Media Server 2 beschrieb. Hier sind einige Grundlagen:

Um eine Application zu erstellen, muss man im Ordner applications im Verzeichnis des Servers einen neuen Ordner anlegen, denn man dann z.B. „app“ benennt. In diesem Ordner erstellt man eine Datei namens „main.asc“, die dann die Logik der Anwendung beschreibt.

Bei FMS2 wird die Datei in AS2 geschrieben, d.h. keine Typbeschreibung in der Variablen-Deklaration, also kein var i:Number; Ausserhalb der Funktionen dürfen keine Variablen stehen. Wenn man Variablen initialisieren will, muss man das in der onAppStart tun.

Die Funktion onAppStart wird automatisch beim Laden der Anwendung aufgerufen, die geschieht, wenn ein Client sich mit der Anwendung verbinden will oder wenn man die Anwendung manuell startet.

application.onAppStart = function() { ... }

Die Funktion onConnect wird aufgerufen, wenn ein Client sich verbinden möchte. Die Verbindung kann man annehmen oder ablehnen.

application.onConnect = function(clientObj,clientName) {
  application.acceptConnection(clientObj);
}

Um eine Funktion beim Client aufzurufen, muss diese in der NetConnection definiert sein. Auf dem Server ruft man über call die Funktion auf.

Flash AS3 (Client)
var nc:NetConnection = new NetConnection(); // Rest siehe voriger Post
nc.eineFunktion = function(wert1,wert2) { ... }

main.asc in AS2 auf Server
clientObj.call("eineFunktion",null,wert1,wert2);
application.broadcastMsg("eineFunktion", wert1,wert2)

An zweiter Stelle steht eine CallBack-Funktion, die aufgerufen wird, wenn eine Antwort erwartet wird. In der zweiten Zeile wird die Funktion auf allen Clients ausgeführt, zu beachten ist hierbei, dass da die CallBack-Funktion fehlt.

Anderherum funktioniert es wie folgt: auf dem Server definiert man über prototype die Funktion in der Client-Klasse. In Flash ruft man sie über call auf.

Flash AS3 (Client)
nc.call(neueFunktion,null,wert3,wert4);

main.asc in AS2 auf Server
Client.prototype.neueFunktion = function(wert3,wert4) { ... }

Noch ein Tipp: sobald man die Datei als asc abgespeichert hat, kann man keine Syntax-Überprüfung machen (was fürn Schwachsinn). Den Quellcode einfach kopieren, neues Fenster auf, ohne Speichern Syntax checken lassen.

Kommentare sind geschlossen.