指定された配列パラメータを配列内で上下に移動します。UpOrDown パラメータで負の値を使用するとパラメータは下に(配列の先頭の方へ)移動し、正の値を指定すると上へ(配列の末尾の方へ)移動します。配列の境界を越えて移動することはできません。
ArrayParameter.Move( Parameter, UpOrDown ); |
パラメータ | タイプ | 説明 |
---|---|---|
Parameter | Variant | 削除する配列パラメータ。配列内のゼロから始まるインデックスを使用することも、配列のメンバであるパラメータオブジェクトとして使用することもできます。その他のタイプでは Invalid Argument エラーが発生します。 |
UpOrDown | Integer | インデックスの数とパラメータの移動方向。パラメータの新しいインデックスは、現在のインデックスにこの値を足したものになります。配列の境界を越えてパラメータを移動することはできません。 |
NewScene ,false GetPrimLight "Point.Preset", "Point" SIApplyShaderToCnxPoint "Volume\Fast_volume_effects.Preset", "Passes.Default_Pass.VolumeShaderStack", , False AddObjectsToShader "light", "Passes.Default_Pass.Fast_volume_effects.Lights" AddObjectsToShader "Point", "Passes.Default_Pass.Fast_volume_effects.Lights" Set oShader = GetValue( "Passes.Default_Pass.Fast_volume_effects" ) Set oLights = oShader.Lights LogMessage oLights.type LogMessage "No Light: " & oLights.Count For i = 0 To oLights.Count - 1 Set oLight = oLights.Parameters( i ).NestedObjects(0) LogMessage "Light " & i & " : " & oLight.FullName Next |
/* This example demonstrates how to move elements up and down in a parameter array. */ NewScene( null, false ); var oCube = ActiveSceneRoot.AddGeometry( "Cube", "MeshSurface" ); var oMat = oCube.AddMaterial( "Phong" ); var oMixer = oMat.surface.ConnectFromProgid( "Softimage.XSIColorMixer.1" ); var oLayers = oMixer.layers; var aLayers = new Array(); for( i = 0; i < 4; i++ ) { aLayers[ i ] = oLayers.Add(); aLayers[ i ].parameters("layer_mixmode").value = i; } var strMsg = "Before : "; for( i = 0; i < oLayers.Count; i++ ) strMsg += oLayers.Parameters( i ).parameters("layer_mixmode").value + " "; LogMessage( strMsg ); // Move element by index, ten indices down. The move will be // clamped to the beginning of the array. oLayers.Move( 3, -10 ); strMsg = "After 1: "; for( i = 0; i < oLayers.Count; i++ ) strMsg += oLayers.Parameters( i ).parameters("layer_mixmode").value + " "; LogMessage( strMsg ); // Move the element by reference, three indices up. The move will // again be clamped, this time to the end of the array. oLayers.Move( aLayers[ 1 ], 3 ); // Move element by reference strMsg = "After 2: "; for( i = 0; i < oLayers.Count; i++ ) strMsg += oLayers.Parameters( i ).parameters("layer_mixmode").value + " "; LogMessage( strMsg ); // Output of above script is: // -------------------------- // INFO : "Before : 0 1 2 3" // INFO : "After 1: 3 0 1 2" // INFO : "After 2: 3 0 2 1" |