Prototype > 定義済みアクセサー > コントロール・アクセサー
 
コントロール・アクセサー
コントロール・アクセサーは、他のアトリビュートが評価されるときにこれらに二次作用を及ぼします。これらはコントロールの構造およびプログラム言語の指示を表しています。グループの詳細情報で、「グラフィックの振る舞い」および「パネル内で直接グラフィックを変更する」タブの各アトリビュートに付加されている「実行」節の下で、これらを見ることができます。
メモ: これらのアクセサーは書き込み専用です。最後にテストされた値は記録しません。値にコントロール・アクセサーのみを定義する場合、この値を読み戻すことはできません。アクセサーに関連付けられている値を保存するには、値アクセサーを同じ名前で定義する必要があります。
異なるコントロール・アクセサーについては、次を参照してください。
*代入
*条件
*フォーマット
*インクリメント
*最小値/最大値
*複数
*Notify
*スクリプト
*スイッチ
*トグル
代入
代入アクセサー (クラス IlvTriggerAccessor) は、値を他のアトリビュートあるいはサブ・アトリビュートに代入するために使用されます。アトリビュートが設定されると、target パラメーターに指定されているターゲット・アトリビュートに指定した値を代入します。
パラメーター
*アトリビュート:このアクセサーが評価されるときに変更されるアトリビュート。
*送る:アトリビュートあるいはアトリビュートに代入される式。
*アクセサーのタイプは確定されていないため、ここでは関係ありません。
lcd ライブラリーの lcd2 プロトタイプは、代入アクセサーを使用します。
条件
条件アクセサー (クラス IlvConditionAccessor) は、アトリビュートが変更されたときに他のアトリビュートの条件による代入を実行するために使用されます。
最初のパラメーターは、アトリビュートの新しい値に適用される条件演算子を定義します。たとえば、アトリビュートの値が 10 に変更された場合、演算子パラメーターは >、そしてオペランドは 5、テストされた条件は 10 > 5 です。演算子が [Operand_value] の場合、テストされた条件は、オペランド・パラメーターの値のみです (つまり、changeValue にパスされた新しい値は無視されます)。
テストの結果に応じて、アトリビュート・パラメーターによって指定されるアトリビュートは、次の 2 つの値のうち 1 つに設定されます。Value if True あるいは Value if False です。オペランド・パラメーター、Value if True あるいは Value if False は、即値 (1 あるいは "red" など)、使用される値の取得のために問い合わせを行う他のアトリビュート、あるいはこれらの即値あるいはアトリビュート名を含む式のいずれかです。
パラメーター
*演算子:条件のテストに使用される演算子。次のいずれかのパレットを使用します。==!=>= <<=、または [Operand_value]
*オペランド:オペランド値。
*アトリビュート:条件に応じて、プロトタイプ値あるいは true あるいは false に設定されるノード・アトリビュートです。
*Value if True:条件が true の場合、出力が設定される値 (あるいは非 0)。
*Value if False:条件が false の場合、出力が設定される値 (あるいは非 0)。
*アクセサーのタイプは確定されていないため、ここでは関係ありません。しかし、オペランド・タイプと互換性がなければいけません。
次の例では、thermo プロトタイプ・ライブラリーの samples プロトタイプを示しています。temperature アトリビュートが 30 を上回る場合、計器は赤で描画されます。そうでない場合、青で描画されます。
フォーマット
フォーマット・アクセサー (クラス IlvFormatAccessor) は、ユーザー指定のフォーマットを使用して倍精度の数値を文字列に変更するために使用することができます。フォーマットされた文字列は、その後、他のアクセサーにコピーされます。値のフォーマットは、C ライブラリー関数 printf に定義されているフォーマット・パラメーターによって指定されます。数値は、変換関数に IlDouble として渡されるので、フォーマットは %g 指定子を含んでいる必要があります。
パラメーター
*フォーマット (printf-style):printf C ライブラリー関数に定義されているフォーマット文字列は、String 値である必要があります。このアクセサーは倍精度の値を変換するだけなので、この文字列に少なくとも 1 つの %g が含まれている必要があります。
*Max # of chars:変換後の文字列の最大長。この長さを超過する場合、値は * 文字で置き換えられます。整数値でなくてはなりません。
*アトリビュート:フォーマット値が代入されるアトリビュート。
samples プロトタイプ・ライブラリーの display プロトタイプで、フォーマット・アクセサーで値が表示される方法を NumberField.label で変更することができます。
インクリメント
インクリメント・アクセサー (クラス IlvCounterAccessor) は、他のアトリビュートを増加させるために使用されます。このアトリビュートを含むアトリビュートが設定されるたびに、カウンターと呼ばれる別のアトリビュートが指定された最大値に達するまで 1 つずつ増加します。この値に達したとき、カウンターはゼロにリセットされます。
パラメーター
*最大値:最大値:増加させる値が最大値と同じになると、0 にリセットされます。
*アトリビュート:増加させるアトリビュート。
*アクセサーのタイプは確定されていないため、ここでは関係ありません。
3 つのステータスのボタンは、MultiRep アクセサーにリンクされているカウンター・アクセサーを使用して実装することができます。次のアクセサーは、samples プロトタイプ・ライブラリーの symbol プロトタイプに追加されます。グループの詳細情報の「インターフェース」タブで state_incr 値を変更すると、ステータスが増加し、表示が切り替わります。
最小値/最大値
最大/最小アクセサー (クラス IlvMinMaxAccessor) は条件アクセサーに似ていますが、アトリビュートを最小および最大閾値に対してテストする場合の一般ケースを処理します。アトリビュートが変更されると、他のアトリビュートが設定されます。代入される値は、現在のアトリビュートが最小値より小さい、最小値と最大値の間、あるいは最大値より大きいかによって異なります。さらに、例外条件を指定することができます。例外条件が true の場合、値は変更されません。
パラメーター
*最小値:最小値を定義します。
*最大値:最大値を定義します。
*の場合を除く :この値が true の場合、値は無視され、出力値あるいはアトリビュートは設定されません。式の結果はブール型値にならなくてはなりません。
*アトリビュート:次の 3 つの値のうち 1 つに設定されるアトリビュート。
*val < 最小値の時:値が最小値より小さい場合、アトリビュートが設定される値が設定されます。
*最小値 < val < 最大値の時:値が最小値と最大値の間の場合、アトリビュートが設定される値が設定されます。
*最大値 > val の時:値が最大値より大きい場合、アトリビュートが設定される値が設定されます。
例 1
このアクセサーは Temperature アトリビュートに付加されます。Temperature が設定されると、Nobody?s at Home が true である場合、何も行われません。Temperature が 15 を下回る場合、HeatOnClimateControl に代入されます。Temperature が 25 を上回る場合、CoolingOnClimateControl に代入されます。気温が 15 と 25 の間にある場合、AllOffClimateControl に代入されます。
例 2
この例では、sample ライブラリーの vertGauge プロトタイプを示します。
複数
複数アクセサー (クラス IlvCompositeAccessor) は、アトリビュート値を複数の他のアトリビュートあるいはサブ・アトリビュートに割り当てます。たとえば、プロトタイプの単一パブリック値を使用して 2 つのグラフィック・ノードの色を変更するときに使用します。
パラメーター
*このアクセサーには、パラメーターの変数値があります。これらの各パラメーターは、値が代入されるアトリビュートあるいはサブ・アトリビュートです。
*すべてのパラメーターには、互換性のあるタイプがあります。
この例では、thermo プロトタイプの色アクセサーを示します。
Notify
Notify アクセサー (クラスIlvOutputAccessor) は、付加されているアトリビュートへの changeValue 呼び出しを pushValue 呼び出しへ返します。特定のアトリビュートを監視する値は、すべての振る舞いを実行します。
このアクセサーは、通知する値に依存する他のアトリビュートの振る舞いをトリガーします。たとえば、温度アトリビュートの再評価も行う閾値アトリビュートに変更を加えることができます。これは、Notify アクセサーを閾値アトリビュートに、および監視 (閾値) の振る舞いを温度アトリビュートに付加することで行われます。
パラメーター
*パラメーターなし。
次の例では、samples ライブラリーの transformer プロトタイプの X_Scale アトリビュートを示します。
スクリプト
このアクセサーについては、スクリプト のデータ・アクセサーで説明されています。
スイッチ
スイッチ・アクセサー (クラス IlvSwitchAccessor) は、Switch ステートメントを実装しています。
パラメーター
*Switch:整数を返す式。その結果に応じて、アトリビュート 0...N にパラメーターの値が代入されます。
*case 0:プロトタイプまたは値""のアトリビュート。Switch0 に評価された場合、このパラメーターで指定されたアトリビュートの振る舞いが実行されます。
*case 1:Switch1 に評価された場合、このパラメーターで指定されたアトリビュートの振る舞いが実行されます。
*...
*case N:SwitchN 以上の値に評価された場合、このパラメーターで指定されたアトリビュートの振る舞いが実行されます。
信号機を、設定に応じて以下のように実装できます。
値    整数
do
Switch Value
case 0 doRed
case 1 doOrange
case 2 doGreen
case 3 Anomaly
 
doRed
do
greenEllipse.visible=False
orangeellipse.visible=False
redEllipse.visible=True
doBlink=False
 
doOrange
do
greenEllipse.visible=False
orangeellipse.visible=True
redEllipse.visible=False
doBlink=False
 
doGreen
do
greenEllipse.visible=True
orangeellipse.visible=False
redEllipse.visible=False
doBlink=False
 
Anomaly
do
greenEllipse.visible=False
orangeellipse.visible=True
redEllipse.visible=False
doBlink=true
 
doBlink Boolean
do
blink orangeEllipse.visible 150
トグル
トグル・アクセサー (クラス IlvToggleAccessor) は、アトリビュートが設定されるたびに他のアトリビュートを true と false 間で切り替えます。トグル振る舞いを含むアトリビュートに代入される値は無視されます。
パラメーター
*論理アトリビュート:この振る舞いが評価されるときに切り替えられるアトリビュート。ブール型でなくてはなりません (たとえば、オブジェクトの可視性アトリビュート)。
次の例では、値 toggle を持つ sources プロトタイプ・ライブラリーの random プロトタイプを示しています。

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