ブラウザの制御を行うことができる「Vitalize Plug-in」エクステンションを使用すると、ccnアプリケーションからJavaScriptのファンクションを呼び出すことができます。JavaScript側からccnアプリケーションのグローバル変数を書き換えることもできるので、ccnアプリケーションとJavaScriptの双方向で情報のやりとりが可能です。工夫によってはCGIとの通信も行えますから、オンラインスコアランキングや、ちょっとしたオンラインゲームを作ることもできるでしょう。
準備
JavaScriptとccnアプリケーション間で通信を行うには、アプリケーションのプロパティ->ランタイムオプション->Vitalize!にある「スタンドアローンアプリケーションから実行しない」と「スクリプトを有効に」をチェックしておく必要があります。
注意:
この項目はClickTeamが作ったvitalizeのサンプルページや、MMF2英語体験版のヘルプを参考にして記述しています。
書いた人間にJavaScriptの知識がまったくなく、プログラムもよくわかってません。詳しい人がいたら編集をお願いします。
参考にしたVitalizeのサンプルページは以下です。
http://www.clickteam.com/vitalize4/testv4.html
ccnアプリケーションからJavascriptのファンクションを呼び出す
ファンクションを呼び出す
Vitalize Plug-inを配置して、アクションの「JavaScript->ファンクションを呼び出し」を選択し、呼び出すファンクション名を入力します。これでJavaScript側のファンクションを実行することができます。
引数の渡し方
ファンクションに引数を与えるには、ファンクションを呼び出す前にJavaScriptメニューにある「パラメータを追加」アクションを実行し、渡す引数をあらかじめセットしておく必要があります。複数の引数を渡したい場合は「パラメータを追加」を繰り返します。引数はセットした順番に渡されます。
セットしたパラメータは「リセット」しなければ消されませんので、引数を含むファンクションを呼び出した後は「JavaScript->パラメータをリセットする」アクションを実行するといいと思います。
戻り値を受け取る
戻り値は、「オブジェクトからデータを抽出」で、Vitalize Plug-inの「Javascript->結果を取得」メニューから抽出できます
JavaScriptからccnアプリケーションの変数を操作する
準備
まず、ccnアプリケーションを埋め込んだページのソースに以下の記述を追加します。以下の記述は、ccnを埋め込んだOBJECTタグよりも下に記述する必要があります。
<SCRIPT> var uag = navigator.userAgent.toLowerCase(); var plgobj; // Internet Explorer if ( uag.indexOf('msie') != -1 && uag.indexOf('opera') == -1 ) plgobj = document.getElementById('Vitalize1'); //「Vitalize1」の記述は、ccnを埋め込んだOBJECTタグのIDと同じものにすること // Netscape/Opera/FireFox else plgobj = document.embeds[0]; </SCRIPT>
この場合、plgobjというオブジェクトがccnアプリケーションを示すことになります。このオブジェクトは、以下のメソッドを使ってccnアプリケーションのグローバル変数、グローバル文字列を操作することができます。
getメソッド
get系メソッドは、ccnアプリケーションのグローバル変数、グローバル文字列を取得します。添え字は0から始まります。(グローバル変数A=0)
整数を取得する getIntValue(globalValueIndex) 実数を取得する getDoubleValue(globalValueIndex) 文字列を取得する getStringValue(globalStringIndex)
例
変数aに、cnnアプリケーションのグローバル変数Aを取得する
a=plgobj.getDoubleValue(0);
setメソッド
set系メソッドは、ccnアプリケーションのグローバル変数、グローバル文字列を書き換えます。
整数を書き換える setIntValue(globalValueIndex, newValue) 実数を書き換える setDoubleValue(globalValueIndex, newValue) 文字列を書き換える setStringValue(globalStringIndex, newValue)
例
ccnアプリケーションのグローバル文字列Aを"test"に書き換える
plgobj.setStringValue(0,"test");