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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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:
1 2 3 4 5 6 7 |
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”:
1 2 3 4 5 |
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
1 |
do{} while (in.read(new byte[1], 0, 1) > -1); |
bevor sie geschlossen wird:
1 2 3 |
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.