This is my first attempt at getting processing to talk to flash and it works. It uses Actionscript 3.0 and grabs an XML stream from a server you setup in processing. This just handles two variables being passed to flash. I have them traced and you can see them in the output window. I made the values increase so that you are constantly receiving different values.
import processing.net.*;
int port = 9001;
Server myServer;
//Variables for Sending
byte zero = 0;
int total = 299;
int total2 = 200;
void setup() {
size (200, 200);
myServer = new Server(this,port);
}
void draw () {
total += 1;
total2 +=2;
myServer.write(total+","+total2);
myServer.write(zero);
}Flash Actionscript 3
// ===serverCom Class=== //
// === created by ===//
// === Josh Shard ===//
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.events.DataEvent;
import flash.events.IOErrorEvent;
import flash.net.XMLSocket;
public class serverCom extends Sprite {
public var serialServer:XMLSocket;
public function serverCom() {
init();
}
public function init():void {
serialServer=new XMLSocket ;
serialServer.connect("127.0.0.1",9001);
serialServer.addEventListener(DataEvent.DATA,onReceiveData);
serialServer.addEventListener(Event.CONNECT,onServer);
serialServer.addEventListener(Event.CLOSE,onServer);
serialServer.addEventListener(IOErrorEvent.IO_ERROR,onServer);
}
// --== EVENTS ==-- \\
public function onServer(event:Event):void {
trace(event);
}
public function onReceiveData(dataEvent:DataEvent):void {
var Data:DataEvent=dataEvent;
//trace(Data);
// This grabs the data from Data var which is the string passed
// from our processing server.
var test=Data.data;
//trace(test);
// This splits the variables we are passing.
var parts:Array=test.split(",");
trace("parts0 this is the first variable: " + parts[0]);
trace("parts1 this is the second variable: " + parts[1]);
}
}
}