我正在运行一个Flash电影,其中包含一个移动的对象,用于视觉科学实验。当我跟随屏幕上的刺激时,我正在使用眼球跟踪器来监控眼球的运动。Flash似乎是一个很好的选择来控制我的刺激,因为它允许矢量缩放和平滑的刺激运动。
眼球跟踪器正在使用MATLAB运行。我想将物体的坐标从ActionScript输出到MATLAB,这样在我的最终数据输出中,我可以将刺激位置与眼睛位置进行比较。
我知道我可能能够通过TCP/IP与MATLAB通信(尽管实际过程对我来说是陌生的),我想知道如何提取对象(圆对象)的X和Y坐标并将它们发送到MATLAB?
任何帮助都将不胜感激
发布于 2012-07-04 19:06:11
我不太了解MATLAB以及如何为它编程,但我会给你一个AS3方面的例子。如果要使用TCP/IP通信,首先需要定义一个服务器和一个客户机。ServerSocket类只支持Flash端的AIR应用程序,所以你应该决定是制作Flash端的服务器还是客户端。如果你想让它成为服务器,你需要编写类似这样的代码:
const IP_ADDRESS:String = "127.0.0.1"; //for local hosting
const PORT:uint = 3444; //basically, you can take any port you want, but higher would be better so that it won't have issues with other programs using ports.
var OurServerSocket:ServerSocket = new ServerSocket();
var ConnectedSocket:Socket;
OurServerSocket.addEventListener(ServerSocketConnectEvent.CONNECT, HandleSocketConnection); //adding listener for socket connections, that we'll handle in our method.
OurServerSocket.bind(PORT, IP_ADRESS); //just binding our socket to the IP and port that we defined
OurServerSocket.listen();
function HandleSocketConnection(e:ServerSocketConnectEvent):void
{
ConnectedSocket = e.socket; //just saving connected socket instance
ConnectedSocket.addEventListener(ProgressEvent.SOCKET_DATA, HandleSocketData); //adding listener to handle any data that comes through our connected socket
trace("Connected: " + ConnectedSocket.remoteAddress);
}
function HandleSocketData(e:ProgressEvent):void
{
var socket:Socket = e.target as Socket;
var bytes:ByteArray = new ByteArray();
socket.readBytes(bytes,0,0);
var Data:String = bytes.toString(); //when the data comes in we store it in this string so that you can than manipulate easily
}
//use this function to send data through the connected socket
function WriteToSocket(data:String):void
{
var dataArray:ByteArray = new ByteArray();
dataArray.writeMultiByte(data, "utf-8");
ConnectedSocket.writeBytes(dataArray);
}如果您决定将客户端用于Flash端,请按如下方式连接到您的服务器:
var SocketConnection:Socket = new Socket();
SocketConnection.connect(IP_ADDRESS, PORT);然后,您可以使用相同的写入和读取方法进行通信。
https://stackoverflow.com/questions/11327436
复制相似问题