Kommunikation zwischen Flash und Java
Wer jemals in die Verlegenheit kommt, zwischen Actionscript und Java kommunizieren zu müssen: Hier als eine mögliche Lösung, eine Socket-Verbindung. Zuerst auf Java-Seite:
import java.net.ServerSocket;
import java.net.Socket;// …
// Port öffnen; Portnummer angeben:
ServerSocket mySocketServer = new ServerSocket(2001);// nur Windows-Systeme:
Runtime.getRuntime().exec(“startflash.bat”);
Socket mySocket = mySocketServer.accept();// Der Socket-Server kann geschlossen werden,
// da die Verbindung besteht
mySocketServer.close();
Über diese Verbindung kann nun byteweise geschrieben werden – ein String muss dazu erst in seine Bytes umgewandelt werden:
InputStream in = mySocket.getInputStream();
OutputStream out = mySocket.getOutputStream();
BufferedOutputStream buffout = new BufferedOutputStream(out);
String s = „zu schreibender Text“;
buffout.write(s.getBytes()); // 8 bit ASCII
buffout.write(0);
buffout.flush(); // Cache leeren
Auf Flash-Seite wird nun auf dem Port “gelauscht”:
var socket:XMLSocket = new XMLSocket();
socket.onData = function(data) { /* do someting */ };// Ggf. IP und Portnummer anpassen:
socket.connect(“127.0.0.1”, 2001);
Die Verbindung kann von Java aufrecht erhalten werden mittels
do{} while (in.read(new byte[1], 0, 1) > -1);
bevor sie geschlossen wird:
in.close();
out.close();
mySocket.close();
Eine “sinnvollere” while-Schleife wäre etwa über das Einlesen einer Datei. Wozu das Ganze? Tja, man kann mit Java recht einfach MIDI-Dateien einlesen, diese mit Flash aber besser visualisieren (Details unter dem Link). Links dazu: FlashMIDI, JMusic.
Möglichkeiten zur Visualisierung von Musik in Flash haben Sven und Axel mit ihrer Videoorgel aufgezeigt.
hf.
0 Comments