## FCurve.GetKeyValue

### Introduced

v3.0

### Description

Returns the value of the key at the specified index. The type of value that is returned depends on the type of fcurve used as follows:
Standard and raw fcurves return a double value (VT_R8)
Integer fcurves return a LONG (VT_I4)
Boolean fcurves return a variant bool value (VT_BOOL,VARIANT_TRUE,VARIANT_FALSE)
Note: If the index is out of range then the method raises an 'Invalid argument' (E_INVALIDARG) error.

### C# Syntax

    Object FCurve.GetKeyValue( Int32 in_Index );

### Scripting Syntax

    oVariant = FCurve.GetKeyValue( Index );

### Return Value

Variant

### Parameters

Parameter | Type | Description
--- | --- | ---
Index | Long | Index of the key. Must be a value between 0 and (number of keys - 1).

### Examples

#### JScript Example

    /*
            This JScript example illustrates how to use the GetKeyValue() method
            to quickly look up a key's value.
    */
    // Create a null
    Application.NewScene( null, false );
    var nullobj = ActiveSceneRoot.AddNull();
    // Create an fcurve on the posx parameter from the null
    var fc = nullobj.posx.AddFCurve()
    // Create a custom property set on the null
    var cpset = nullobj.AddCustomProperty( "CustomPSet" );
    var empty;
    var x = cpset.AddParameter( "X", siDouble, empty, siAnimatable, "X", "X", empty, 5, 0, 5 );
    var y = cpset.AddParameter( "Y", siInt4, empty, siAnimatable, "Y", "Y", empty, 5, 0, 5 );
    var z = cpset.AddParameter( "Z", siBool, empty, siAnimatable, "Z", "Z", empty, true );
    var fc1 = x.AddFCurve();
    var fc2 = y.AddFCurve();
    var fc3 = z.AddFCurve();
    // Use the Resample method to add keys to the fcurve on every second frame
    fc1.NoKeyValue = Math.random() * 100;
    fc2.NoKeyValue = Math.random() * 100;
    fc3.NoKeyValue = true;
    fc1.Resample( empty, empty, 2 );
    fc2.Resample( empty, empty, 2 );
    fc3.Resample( empty, empty, 2 );
    printfc( fc1 );
    printfc( fc2 );
    printfc( fc3 );
    // Print out all key frame/value pairs
    function printfc(fc)
    {
            var index;
            for ( index=0; index<fc.GetNumKeys(); index++ )
            {
                    LogMessage( "key" + index + " frame = "
                            + Math.round(fc.getkeyframe(index))
                            + " value = " + fc.getkeyvalue(index)
                    );
            }
    }
    // Outputs:
    //INFO : key0 frame = 1 value = 24.42401859658091
    //INFO : key1 frame = 3 value = 24.42401859658091
    //INFO : key2 frame = 5 value = 24.42401859658091
    //      etc...
    //INFO : key48 frame = 97 value = 1
    //INFO : key49 frame = 99 value = 1
    //INFO : key50 frame = 100 value = 1

### See Also

FCurveKey.Value FCurve.GetKeyFrame FCurve.GetKeyValue FCurve.GetKeyIndex