Property
プロパティー(Property)について¶
CueMolに登場するオブジェクトのうちいくつかには, プロパティーという概念があります. プロパティーは特にレンダラーにおいて重要です.
プロパティーは,文字通りそれを所有するオブジェクトの性質を決めるものです.
例えば,レンダラーはそのプロパティーにより表示色などが決まります.プロパティーはプロパティー名(文字列)とプロパティー値からなっており,プロパティー値は任意の型を取ることができます.
プロパティーの取得と設定¶
QScriptで,あるレンダラー$rendの,"foo"というプロパティーを取得する場合は,
$value = $rend.getProp("foo");
と記述します.
逆に,あるレンダラー$rendの,"foo"というプロパティーを整数値'1'に設定する場合は,
$rend.setProp("foo", 1);
と記述します.
ただし,以下に該当する場合は例外が発生します.
- プロパティー"foo"が$rend存在しない場合
- プロパティー"foo"がQScriptがサポートする型のいずれにも変換できない場合.
- setProp()において,"foo"プロパティーの型と与えられた値の型が一致しない場合.
ただし,整数・実数間では自動型変換が起こるので,実数プロパティーに整数値を設定しても問題ありません.
サブプロパティー (Sub property)¶
プロパティーの中には,さらにその内部にサブプロパティーをもつものがあります. 例えば,tubeレンダラーはsectionというプロパティーを持っていますが,sectionはその内部にwidth, tuberなど, 断面の形状に関するさまざまなプロパティーを持っています.
サブプロパティーを設定・取得するには,ドット表記を用います.
$value = $rend.getProp("section.width");
上記の例では,"section"のサブプロパティーである"width"を取得しています.
ところで,"section"プロパティー自体はTubeSectionという型を持っていますが,この型はQScriptでは扱えません.このように,QScriptでは扱えない型を持つプロパティーでも,そのサブプロパティーは設定・取得できるわけです.