Prototype > 定義済みアクセサー > データ・アクセサー
 
データ・アクセサー
データ・アクセサーは、値あるいは値へのポインターを保持します。これらは任意のアトリビュートのタイプを定義します。これは C++ などのプログラミング言語での変数宣言に似ています。すべてのアトリビュートは、これらのアクセサーのうちの 1 つのみを含みます。
メモ: 一部のアクセサーでは、値 (インスタンスの回転) を保持します、つまり、これらを保持する値はその他のデータ・アクセサーを必要としません。
異なるデータ・アクセサーについては、次を参照してください。
*
*リファレンス
*グループ化
*スクリプト
値アクセサー (クラス IlvValueAccessor) により、値を保持するアトリビュートをプロトタイプに付加できます。値が変更されたときは保存されます。値の問い合わせが行なわれると、最後に格納された値が返されます。
パラメーター
*値のタイプは導出できないため、パラメーターではなく値のタイプが指定されなくてはなりません。
例:
samples プロトタイプ・ライブラリーにある pump プロトタイプの invertedColor アトリビュートは、色名を一時的変数として保存します。
リファレンス
リファレンス・アクセサー (クラス IlvNodeAccessor) は、プロトタイプ・レベルでプロトタイプ・ノード (サブ・アトリビュートとも呼ばれます) の 1 つのアトリビュートを参照するために使用されます。対応するアトリビュートが変更されると、新しい値が指定されたサブ・アクセサーに転送されます。逆に言えば、アトリビュートの問い合わせが行われるとき、まずノードから問い合わせ、その後でプロトタイプに転送されます。リファレンス・アクセサーはプログラム言語の参照 (ポインター、あるいはエイリアス) と似ています。
パラメーター
*アクセサー:ノード・アトリビュートあるいは値を保持するプロトタイプ値のタイプは、アクセサーが何をポイントするかによって決まります。
samples ライブラリーの thermo プロトタイプにある steps アトリビュートは、直接 scale オブジェクトの steps アトリビュートをポイントします。アトリビュート steps が設定されていると、それは scale.step アトリビュートに代入されます。scale.step アトリビュートがプログラムによって変更されると、アトリビュートのすべての問い合わせで新しい値を返します。
グループ化
グループ・アクセサー (クラス IlvGroupUserAccessor) は、すべてのグループ・ノードで同じ名前の全サブ・アトリビュートを集合的に参照するアトリビュートを定義します。たとえば、foreground という名前で Color というタイプのこのアクセサーを使用して、すべてのプロトタイプ要素の前景色を 1 回の代入で変更することができます。
パラメーター
*パラメーターなし。アトリビュートの名前は、このアクセサーによって参照されるサブ・アトリビュートを決定するときに使用されます。アクセサーのタイプは暗黙的に決定されます。
samples プロトタイプ・ライブラリーの pump プロトタイプで、lineWidth アトリビュートを追加することができます。アトリビュートはタイプ UInt でなくてはなりません。このアトリビュートをグループの詳細情報から変更すると (「インターフェース」タブを使用して)、定義された lineWidth を持つすべてのグラフィック・オブジェクトの線の幅を変更します。
スクリプト
スクリプト・アクセサー (IlvJavaScriptAccessor) を使うと、Rogue Wave Views Studio に含まれているスクリプト言語インタープリターを使用してプロトタイプの振る舞いをプログラムできます。
スクリプト・アクセサーは、スクリプト関数の名前である 2 つのパラメーターを持っています。
*set 関数は、アクセサーの値が変更されるときに呼び出されます。形式は次のようになります。
function SetX(obj, newval)
{
...
}
obj 引数は、アクセサーに関連付けられているプロトタイプです。newval 引数は、アトリビュートに割り当てられた新しい値です。
*get 関数は、アクセサーの値の問い合わせを行うときに呼び出されます。形式は次のようになります。
function GetX(obj)
{
...
return(val);
}
obj 引数は、アクセサーに関連付けられているプロトタイプです。関数は、アトリビュートの新しい値となる値を返します。
スクリプト・アクセサーと関連付けられている関数では、あらゆるプロトタイプ・アトリビュートあるいはプロトタイプ・ノードにアクセスして変更することができます。スクリプト・アクセサーの 2 つの関数名のいずれかは、何の関数も呼び出さない none とすることができます。
スクリプト・アクセサーに関連付けられている関数は、Rogue Wave Views Script Editor を使用して編集することができます。これらは、同じディレクトリーに .ijs サフィックスを持つファイルとして、プロトタイプと同じファイル名で保存されます。そうでない場合は、プロトタイプ・ファイルあるいはそのライブラリー・ファイルに保存されます。
メモ: 同じパネルで同じ関数名を持つ複数のプロトタイプ・インスタンスを読み込もうとするとき、命名の競合が起こる場合があります。そのため、すべてのプロトタイプ・スクリプト関数の名前のプレフィックスを、これらが属するプロトタイプ名にするようにします。たとえば、samples.thermo プロトタイプで、Temp 値がスクリプト・アクセサーを持つ場合、その関数を、SamplesThermoTempGet() および SamplesThermoTempSet() と呼びます。
パラメーター
*スクリプト関数 (set):アトリビュートが変更されたときに実行するスクリプト関数の名前。
*スクリプト関数 (get):アトリビュートの問い合わせが行われたときに実行するスクリプト関数の名前。
*タイプは、set 関数が返す値によって決定され、あるいは get 関数にパラメーターとして取得されます。つまり、動的に変更します。
次の関数は、条件アクセサーに似たアクションを実行するために使用されます。
function SetTemperature(obj, temperature)
{
if(temperature > obj. threshold) {
obj.gauge.foreground = "red";
} else {
obj.gauge.foreground = "blue";
}
}
 
function GetTemperature(obj)
{
return obj.gauge.foreground;
}

Version 6.0
Copyright © 2015, Rogue Wave Software, Inc. All Rights Reserved.