PlayControl プロパティ セットは、シーンレベルのプロパティの 1 つで、シーンの再生方法を定義します。 このプロパティ セットはシーンレベルなので、名前によって直接識別することが可能です。それ以外のネームスペースは必要ありません(たとえば、GetValue("PlayControl")のようになります)。
PlayControl プロパティ セットの SIObject.Name または SIObject::GetName は "Play Control"(スペース含む)ですが、その SIObject.FullName または SIObject::GetFullName は "PlayControl"(スペースなし)です。この違いは重要です。このプロパティセットにアクセスするときは、Name を使用してプロパティのリストから識別しますが、それ以外の場合は以下に示すように FullName を使用して識別するので、覚えておく必要があります。
Softimage の他のプロパティと同じように、パラメータ データ値の読み取りと書き込みを直接行ったり、Property または Property オブジェクトへのポインタを取得してから Parameter または Parameter オブジェクトを使用してデータを取得および設定することができます。
PlayControl パラメータ値は、GetValue および SetValue コマンドを使用して PlayControl プロパティ セットの SIObject.Name または SIObject::GetName ("PlayControl")を指定すると、直接取得および設定できます。
Dictionary.GetObject メソッドでは、PlayControl プロパティ セットの Name ("PlayControl")を使用して、取得するオブジェクトを識別します。PlayControl はシーンレベルのプロパティなので、1 つのシーンに対して常に 1 つだけ存在します。そのためネームスペースは必要ありません。
プロパティを指すポインタを取得したら、PlayControl.Parameters を使用して各 Parameter にアクセスできます。パラメータ値は、Parameter.Value プロパティを使用して取得し、設定できます。
// JScript (object model access) var remote_control = Dictionary.GetObject( "PlayControl" ); var curr_frame = remote_control.Parameters( "Current" ); ' Dictionary.GetObject returns a pointer to the specified Parameter // Find out what the current frame is Application.LogMessage( "Current frame: " + curr_frame.Value ); // Go to frame 10, and then the last frame curr_frame.Value = 10.0; curr_frame.Value = remote_control.Parameters( "Out" ).Value;
C++ API およびオブジェクト モデルの両方で、現在の(アクティブな)project または project からシーンレベルのプロパティのコレクションを使用してアクセスする手段を提供しています。この手法で重要なのは、ここでは他の方法とは違い、SIObject.FullName または SIObject::GetFullName ("Play Control")を使用して PlayControl プロパティ セットを識別している点です(下の例を参照)。
オブジェクト モデルの場合は、プロパティを指すポインタを取得したら、PlayControl.Parameters を使用して各 Parameter にアクセスし、Parameter.Value プロパティを使用してパラメータ値を取得し、設定できます。
C++ API の場合は、プロパティを指すポインタを取得したら、Property クラスで使用できる関数を使用して、Parameter クラス(GetParameter または GetParameters)を指すポインタを取得したり、パラメータ値(GetParameterValue および PutParameterValue)の読み取りと書き込みを行うことができます。
# Get the current project app = Application prj = app.ActiveProject # The PlayControl property set is stored with scene data under the project proplist = prj.Properties playctrl = proplist("Play Control") # Remember that the fullname of PlayControl is different from its name: app.LogMessage( "PlayControl's Name: " + playctrl.Name ); app.LogMessage( "PlayControl's FullName: " + playctrl.FullName ); # Expected result #INFO : PlayControl's Name: Play Control #INFO : PlayControl's FullName: PlayControl
// Get the current project Application app; Project prj = app.GetActiveProject(); // The PlayControl property set is stored with scene data under the project CRefArray proplist = prj.GetProperties(); Property playctrl( proplist.GetItem(L"Play Control") ); // Remember that the fullname of PlayControl is different from its name: app.LogMessage( L"PlayControl's Name: " + playctrl.GetName() ); app.LogMessage( L"PlayControl's FullName: " + playctrl.GetFullName() ); // Expected result //INFO : PlayControl's Name: Play Control //INFO : PlayControl's FullName: PlayControl