指定された配列パラメータを配列内で上下に移動します。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" |