/*** OcxConnector.as SetVariable,fscommandを使って、Flash.ocxとデータをやりとりする為のライブラリ for ActionScript2(Flash8) Date: 2006/9/5 Author: Sho Hashimoto WebSite: http://shokai.org ***/ class OcxConnector{ var recvData:Object = new String(); // SetVariable用データ受信変数 var recvArray:Object = new String(); // SetVariableで配列を渡す用 ","区切り var func_recvData:Array = new Array(); // データ受信時のコールバック関数のリスト var func_recvArray:Array = new Array(); // 配列受信時のコールバック関数のリスト /* コンストラクタ */ function OcxConnector(){ watch("recvData", sig_recvData); // 受信監視 watch("recvArray", sig_recvArray); // 配列受信監視 trace("Create: OcxConnector"); } /* Flash.ocxを通して.NETにデータ送信 */ function sendData(data:String){ fscommand("connector.senddata", data); // command,args } /* Flash.ocxを通して.NETに配列をシリアライズして送信 */ function sendArray(array:Array){ fscommand("connector.sendarray", array.toString()); // カンマ区切りにして送信 } /* データ受信した時のコールバック関数をセット */ function setFunc_onRecvData(func){ func_recvData.push(func); trace("setFunc_onRecvData: "+func_recvData.length); } /* 配列受信した時のコールバック関数をセット */ function setFunc_onRecvArray(func){ func_recvArray.push(func); trace("setFunc_onRecvArray: "+func_recvArray.length); } /* データ受信した時のコールバック関数を削除 */ function removeFunc_onRecvData(func){ trace("未実装"); } /* データを受信した時 */ function sig_recvData(prop:Object, oldVal:Object, newVal:Object, userData:Object){ trace("connector.sig_recvData: "+newVal); for(var i = 0; i < func_recvData.length; i++){ func_recvData[i](newVal); // コールバック } } /* 配列を受信した時 */ function sig_recvArray(prop:Object, oldVal:Object, newVal:Object, userData:Object){ trace("connector.sig_recvArray: "+newVal); var array:Array = newVal.split(","); for(var i = 0; i < func_recvArray.length; i++){ func_recvArray[i](array); // call back } } }