日本でハリウッドVFXを制作! 「経産省アイディアボックス」 結果:  
●まとめエントリはこちら ●FAQ ●お問い合わせは左のメールフォームから

2010年1月5日火曜日

その他のコントロール(5): ラジオボタン(radioButton)

radioButtonコマンドは必ずradioCollectionと一組で使う必要があります。
しかし数が増えてもコマンドの使い方は同じなので、「radioButtonGrp」より使い道が広く、シンプルに保てます。

●まず「radioButton」コントロールを単体かつ、フラグ無しで使ってみます。
{
window name;
columnLayout;

radioButton;

showWindow;
}

「radioCollection」が使われていないので以下のようなエラーになります。
// Error: Collection not found, or no current collection. //
エラー:Collectionが見つからないか、または現在有効なCollectionがありません


●「radioCollection」コントロールを使う。
「radioCollection」は必ず「radioButton」の前に使われる必要があります。
{
window name;
columnLayout;

radioCollection;
radioButton;

showWindow;
}


●複数のラジオボタン
ラジオボタンの数を増やすには単に「radioButton」コマンドを繰り返し実行します。
「radioButtonGrp」では作れない9つのボタンを作ってみます。
{
window name;
columnLayout;

radioCollection;
radioButton;
radioButton;
radioButton;
radioButton;
radioButton;
radioButton;
radioButton;
radioButton;
radioButton;

showWindow;
}



●-label
各ボタンのラベルです。通常のコントロールと同じです。
「radioCollection」には-labelフラグがないのでグループ名が必要な場合は
text」コントロールを使用します。
{
window name;
columnLayout;

text -label "radioButtons";

radioCollection;
radioButton -label "test1";
radioButton -label "test2";
radioButton -label "test3";

showWindow;
}


●戻り値の利用
どのボタンが選択されているかを知るには、「radioCollection」を照会モードで使用します。
また-valueフラグは無く、-selectフラグを使います。
「アサイン」は以下のようになります。
`radioCollection -q -select`
戻り値はstring値です。

これを適用して、戻り値を出力するスクリプトを作ってみました。
{
global proc buttonName()
{
string $name = `radioCollection -query -select rcName`;
print ($name+"\n");
}

window name;
columnLayout;

text -label "radioButtons";

radioCollection rcName;
radioButton -label "test1";
radioButton -label "test2";
radioButton -label "test3";

button -label "print" -command "buttonName()";

showWindow;
}

戻り値はstring値であり、それぞれ
radioButton1
radioButton2
radioButton3
であることがわかります。


これを条件文で使い、
スフィア、シリンダ、コーンを選択して作成するスクリプトを作ってみます。
{
global proc buttonName()
{
string $name = `radioCollection -query -select rcName`;

if($name == "radioButton1")
{sphere;}
else if ($name == "radioButton2")
{cylinder;}
else if ($name == "radioButton3")
{cone;}

}

window name;
columnLayout;

text -label "radioButtons";

radioCollection rcName;
radioButton -label "test1";
radioButton -label "test2";
radioButton -label "test3";

button -label "print" -command "buttonName()";

showWindow;
}


----------------------------------------
まとめ
----------------------------------------
●「radioButton」の使い方はボタンの数が増えても変わらないので、5つ以上の場合はこちらのほうが簡単。

●「radioButtonGrp」との使い分ける場合覚えることが増えるので「radioButton+radioCollection」の組み合わせ1つ覚えておいたほうが応用が利くように思います。

 

0 件のコメント:

コメントを投稿