テクニック集/JavaScriptとccnアプリケーションで通信する

Last-modified: 2011-05-20 (金) 00:04:59

ブラウザの制御を行うことができる「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");