今回は実際にフィールドを使ってみます。
時間の無駄にならないように前もって言っておきますが、今回のエントリは、あまり役に立たないと思います。
このエントリでは、floatFieldコマンドと以下のフラグをテストしました。
結論から言うと、目的である「フィールドへの入力値をスクリプトで利用する」ことはこれらのフラグではできません。(少なくとも現在の私の知識では)
(このエントリで試したフラグ一覧)
-changeCommand
-enterCommand
-dragCommand
-receiveFocusCommand
-annotation
----------------------------------------
では以前、一番必要性を感じた「floatField」から検証していきたいと思います。。
使用する基本的フォーマットは以下の通りです。
なお行数が増えて見づらくなるので、同じ名前のウインドウが存在する場合に削除するif文+deleteUIの行は含めていません。
{
window name;
columnLayout;
<コントロール・コマンド>
showWindow;
}
----------------------------------------
まずは「floatField」コマンドをフラグ無しで使った場合。
ウインドウ内にフィールドが作成されます。
値を変えてもなにも起こりません。
{
window name;
columnLayout;
floatField;
showWindow;
}
とりあえず何か値を変更した時に、反応することで、フィールドがちゃんと生きていることを確認してみようと思います。
オンラインヘルプで、それらしいフラグを探してみたところ以下のような物がありました。
-changeCommand(-cc):フィールドが変更されたときに実行されるコマンドです。値が -v/value フラグによって変更されたときはこのコマンドは起動されません。
-enterCommand(-ec):キーパッドの「Enter」キーが押されたときに実行されるコマンドです。
-dragCommand(-dc):フィールドでドラッグしたときに実行されるコマンドです。
-receiveFocusCommand(-rfc):フィールドにフォーカスが移ったときに実行されるコマンドです。
それぞれ検証してみます。
----------------------------------------
<-changeCommand>
値が変更されるとNurbsスフィアが作られます。
値を変更するには以下のような方法があります。
フィールドでCtrl+LMBドラッグする。
値をキー入力してEnterを押す。
値が変わってないばあいはEnterキーを押しても何も起きません。
{
window name;
columnLayout;
floatField -changeCommand sphere;
showWindow;
}
----------------------------------------
<-enterCommand>
フィールドに値を入力し、(テンキー側の)Enterが押された瞬間にNurbsスフィアが作成されます。
値が同じでもEnterキーが押されれば実行されます。
{
window name;
columnLayout;
floatField -enterCommand sphere;
showWindow;
}
----------------------------------------
<-dragCommand>
フィールドにマウスポインターを移動し、左(または右)マウスボタンをドラッグすると次々とスフィアが作成されます。ちょっとやっただけで60個のスフィアが作成されました。
私のマシンでは、タブレットしかないためマウスでの正確な動作はわかりませんが、タブレットではクリックした時点でひとつのスフィアが作成されました。(微細な手ぶれをドラッグとして認識しているのかもしれません)
また中ボタンには反応しません。
{
window name;
columnLayout;
floatField -dragCommand sphere;
showWindow;
}
----------------------------------------
<-receiveFocusCommand>
この例では動作をわかりやすくするためにfloatFieldコマンドを二度つかっています。
それぞれ、マウスでフィールドをクリックしてフォーカスされた場合にNurbsオブジェクトを作成します。
上のフィールドがフォーカスされたらNurbsスフィア。
下のフィールドがフォーカスされたらNrubsシリンダが作成されます。
{
window name;
columnLayout;
floatField -receiveFocusCommand sphere;
floatField -receiveFocusCommand cylinder;
showWindow;
}
結論から言うと、それぞれフラグの名前通りの動作をするだけ。
これらのフラグはただ単にボタンの「-command」フラグと同じ働きをするだけだ。
目的とする「入力された値を利用する」ためのフラグではなかった。
----------------------------------------
ついでなので、気になった「-annotation」フラグの働きも確認してみた。
-annotation(-ann): コントロールに文字列値で注釈を付ける。
フィールド上にマウス・ポインターをあわせたとき、ヘルプ・ラインへ注釈が表示される。
例1:floatField -annotation test;
注釈がスペースを含む場合は、「" "(ダブルクォーテーション)」で囲む
例2:floatField -annotation "test 1";
0 件のコメント:
コメントを投稿