jsexecutor クラス : Notice(class,string) メソッド

説明

ハンドラを"Notice"イベントに割り当てます。

構文

instance.Notice(class handleClass, string signature)

引数

クラス名前説明
classhandleClassハンドラをメンバとして持つインスタンス。
stringsignatureハンドラのシグネチャ。

返り値

クラス説明
switchハンドラの実行を制御するインスタンス。

サンプルコード

次のクラス定義があるとします。

1:

class handle

2:

open method void NHandler(dictionary dic)

3:

switch sw = dic.Switch;

4:

string data = dic.Data;

5:

endmethod

6:

endclass

ハンドラの割り当ては次のとおりです。

1:

jsexecutor jse; // For Main-browser

2:

handle h = new handle();

3:

switch sw = jse.Notice(h,"Nhandler(dictionary)");

4:

sw.Start();

注意

"Notice"イベントは JavaScript で以下の関数を呼び出した時に発生します。


window.cooker.external.Notice(token, 'A string data which will be passed to the Rice.');


関数の引数がハンドラに渡されます。


window.cooker.external は JavaScript と Rice が通信するために JavaScript 環境に公開されているホストオブジェクトです。


"Notice"イベントのハンドラは、dictionaryクラスの引数を一つ持つopenメソッドでなければなりません。

つまり、ハンドラのメソッド名が "handlerName"の場合、ハンドラの定義は次のようになります。


open method void handlerName(dictionary dic)

...

endmethod


この場合、第2引数で指定されるハンドラのシグネチャは "handlerName(dictionary)"です。

ホストオブジェクトは以下の名前で JavaScript に公開されています。


window.cooker.external

window.chrome.webview.hostObjects.external


前者は後者の別名です。どちらを使っても同じように機能します。ここでは、window.cooker.external を例にして説明します。

window.cooker.external は以下の非同期関数を持ちます。


window.cooker.external.GetData(token)

Rice からのデータを JavaScript で受け取ります。

window.cooker.external.SetData(token,data)

JavaScript からデータを Rice に送ります。

window.cooker.external.Notice(token,data)

JavaScript から Rice の jsexecutor.Notice イベントを発火します。


ホストオブジェクトについてはJavaScriptの拡張機能を参照してください。


イベント発生時にハンドラに渡される dictionary は以下の key と value のペアを持ちます。

keyvalue(クラス)value(説明)
Senderjsexecutorイベントの発生元。
Switchswitchハンドラの割り当てで返される switch と同じインスタンス。
Datastringwindow.cooker.external.Notice(token,data) のdata引数。

ハンドラは専用のスレッドで実行されます。

参照リンク

無し。

Copyright © Cooker All rights reserved.