0

視覚科学の実験に使用される、動く物体を含むFlashムービーを実行しています。私は視線追跡装置を使用して、画面上の刺激を追跡するときに行われる眼球運動を監視しています。Flashは、ベクトルスケーリングとスムーズな刺激の動きを可能にするため、刺激を制御するための優れたオプションのようです。

アイトラッカーはMATLABを使用して実行されています。オブジェクトの座標をActionScriptからMATLABに出力して、最終的なデータ出力で刺激位置と目の位置を比較できるようにします。

ASからMATLABにTCP/IPを介して通信できる可能性があることを理解しています(実際の手順は私には関係ありませんが)。オブジェクト(円オブジェクト)のX座標とY座標をどのように抽出するのか疑問に思います。そしてそれらをMATLABに送信しますか?

どんな助けでも大歓迎です

4

1 に答える 1

0

私は 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);

そうすれば、書き込みと読み取りに同じ方法を使用して通信できます。

于 2012-07-04T11:06:11.023 に答える