RCMenu 句

 

   

ユーザ インタフェースの作成 - クイック ナビゲーション

<rcmenu_body> は、次に示すようにスクリプト化された右クリック メニュー句のシーケンスで構成されています。

<rcmenu_body> ::= { <rcmenu_clause> }+

スクリプト化された右クリック メニュー句は、スクリプト化された右クリック メニューのコンポーネントを定義し、次の 3 つの基本的な項目のいずれかになります。

ローカルの可視性、スクリプト化されたローカルの右クリック メニューへの外部コードからのアクセスについては、ユーティリティ ロールアウトの場合と同様です。詳細は、「ロールアウト コード内のローカル、関数、構造体、ユーザ インタフェース項目の可視性」および「外部コードからロールアウトのローカルおよび他の項目へのアクセス」を参照してください。ユーティリティ ロールアウトおよびスクリプト化された右クリックメニューにおいて、ユーザ インタフェース項目に付けられた名前は、項目を表す値を保持するローカル変数の名前として自動的に使用されます。また、イベント ハンドラ関数を項目に関連付けるためにも使用されます。これらの変数における範囲の違いとして、ユーティリティ ロールアウトではロールアウトのローカルとなり、スクリプト化された右クリック メニューではスクリプト化されたクリック メニューのローカルとなることが挙げられます。つまり、スクリプト化された右クリック メニュー内のすべてのユーザ インタフェース項目の名前は、 subMenu に存在する項目を含め、スクリプト化された右クリック メニュー内で一意でなければなりません。

<rcmenu_clause> は、次のように定義されます。

<rcmenu_clause> ::= <local_variable_decl> | <local_function_decl> | <local_struct_decl> | <user_interface_item> | <event_handler>

ローカル

<local_variable_decl> <local_function_decl> <local_struct_decl> は、MAXScript 内のローカル変数、関数、構造体の定義とまったく同義です。

<local_variable_decl> ::= local <decl> { , <decl> } 
<decl> ::= <name> [ = <expr> ] -- optional initial value
<local_function_decl> ::= [ mapped ](function | fn) <name> { <argument> } = <expr>
<local_struct_decl> ::= struct <name> ( <member> { , <member> })<member> ::= ( <name> [ = <expr> ] | <local_function_decl> )

上記の例を、次に順番に示します。

local numSelected
local numSelected = 0
fn onlyOneSelected = selection.count == 1
struct parents (mother="",father="")

グローバル変数は、スクリプト化された右クリック メニュー句としては宣言できませんが、イベント ハンドラのスクリプト内では宣言できます。変数名がグローバル変数を確実に参照するようにするには、変数名をスクリプト内で右クリック メニューを定義する直前にグローバルとして宣言します。

スクリプトを作成するときは、ローカル変数およびグローバル変数を明示的に宣言することをお勧めします。暗示的な宣言は簡易的に提供されるものであり、通常、リスナーでインタラクティブに作業する場合や短いスクリプトを作成する場合に使用します。長いスクリプトを作成する場合は、変数を明示的に宣言するとエラーを軽減し、コードが読みやすくなります。また、特にグローバル変数を必要な場合を除き、すべての変数をローカルとして宣言することをお勧めします。この理由については、「変数のスコープ」を参照してください。

ユーザ インタフェース項目

<user_interface_item> は、右クリック メニューに表示される個々のメニュー項目、区切り記号、またはサブメニュー ユーザ インタフェース項目を定義します。これらのユーザ インタフェース コントロール項目については、「RCMenu ユーザ インタフェース項目」を参照してください。

イベント ハンドラ

イベント ハンドラ <event_handler> は、スクリプト化された右クリック メニューに対する特殊な関数定義ローカルで、ユーザがメニュー項目をクリックしたときに処理を起動するために使用します。このユーザ アクションは名前付きのイベントを生成し、このイベントに対するイベント ハンドラを呼び出します。ハンドラを定義する構文は次のようになります。

on <item_name> <event_name> do <expr>

<item_name> は、このハンドラが結びついている項目の名前を指定します。 <event_name> には、処理するイベントのタイプを指定します。

ユーザ インタフェース項目のイベントには次のタイプだけがあります。

picked

picked ハンドラ式は、右クリック メニューでメニュー項目が選択されたときに実行されます。オブジェクトの作成、モディファイヤの追加など、すべての MAXScript アクションはこの式で実行できます。

右クリック メニューの特定のメニュー項目に対して指定するイベント ハンドラに加え、ユーザが右クリック メニュー全体を初めて開いたときに呼び出されるハンドラ関数を定義できます。このイベント ハンドラは、初期化コードに便利です。イベント ハンドラを定義する構文は次のようになります。

on <rcmenu> open do <expr>

関連事項