# \[FLASH9\]variable names as arguments?

**URL:** <https://forum.kirupa.com/t/flash9-variable-names-as-arguments/271533>\
**Category:** flash\
**Created:** [September 24, 2008, 9:15am UTC](https://forum.kirupa.com/t/flash9-variable-names-as-arguments/271533 "2008-09-24T09:15:25Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![mulletchuck](https://avatars.discourse-cdn.com/v4/letter/m/848f3c/32.png) [@mulletchuck](https://forum.kirupa.com/u/mulletchuck)\
**Post date:** [September 24, 2008, 9:15am UTC](https://forum.kirupa.com/t/flash9-variable-names-as-arguments/271533/1 "2008-09-24T09:15:25Z")

</div>

Hi. Is it possible to pass variable as arguments for a function?

I wish to update a boolean variable via a function, by passing the name of the variable to the function, like so:

```auto

function ENVSegment(curSegment:Boolean, nextSegment:Boolean)
{
curSegment = false;
nextSegment = true;
}

var attackSegmentIsRunning:Boolean = false;
var releaseSegmentIsRunning:Boolean = false;

ENVSegment(attackSegmentIsRunning, releaseSegmentIsRunning);

```

the purpose of this is to turn code like this:

```auto

function newENV2()
{
    var time:Number = 0;
    var startPos:Number = 0; 
    var endPos:Number = 0;
    var segmentPos:Number = 0;
    var segmentStep:Number = 0;
    
    if (ENV2IsRunning == true)
    { //1. attack1Segment
        if (attack1SegmentIsRunning == true)
        {
            //ENVSegment(attack1TimeCB.value, 0, attack1ValCB.value, attack1SegmentIsRunning, attack2SegmentIsRunning, "attack1");
            
            curSegmentText.text = "attack1";
            time = attack1TimeCB.value;
            startPos = 0;
            endPos = attack1ValCB.value;
            segmentPos = newCalc(time, startPos, endPos);
            segmentStep = 1 / ( (time * 1000) / pixelsPerSecond);
                if (time == 0) { segmentStep = 0; }
            if (segmentPos >= ( 1 - segmentStep))
            {
                attack1SegmentIsRunning = false;
                attack2SegmentIsRunning = true;
                currentSegmentHeight = endPos / 100;
                ENV2Value = -endPos/100;
                segmentCounter = 0;
            }
        }
        //2. attack2Segment
        if (attack2SegmentIsRunning == true)
        {
            curSegmentText.text = "attack2";
            time = attack2TimeCB.value;
            startPos = attack1ValCB.value;
            endPos = attack2ValCB.value;
            segmentPos = newCalc(time, startPos, endPos);
            segmentStep = 1 / ( (time * 1000) / pixelsPerSecond);
                if (time == 0) { segmentStep = 0; }
            if (segmentPos >= ( 1 - segmentStep))
            {
                attack2SegmentIsRunning = false;
                attack3SegmentIsRunning = true;
                currentSegmentHeight = endPos / 100;
                ENV2Value = -endPos/100;
                segmentCounter = 0;
            }
        }//3. attack3 segment
        if (attack3SegmentIsRunning == true)
        {
            curSegmentText.text = "attack3";
            time = attack3TimeCB.value;
            startPos = attack2ValCB.value;
            endPos = attack3ValCB.value;
            segmentPos = newCalc(time, startPos, endPos);
            segmentStep = 1 / ( (time * 1000) / pixelsPerSecond);
                if (time == 0) { segmentStep = 0; }
            if (segmentPos > ( 1 - segmentStep))
            {
                attack3SegmentIsRunning = false;
                decay1SegmentIsRunning = true;
                currentSegmentHeight = endPos / 100;
                ENV2Value = -endPos/100;
                segmentCounter = 0;
            }
        }//4. decay1 segment
        if (decay1SegmentIsRunning == true)
        {
            curSegmentText.text = "decay1";
            time = decay1TimeCB.value;
            startPos = attack3ValCB.value;
            endPos = decay1ValCB.value;
            segmentPos = newCalc(time, startPos, endPos);
            segmentStep = 1 / ( (time * 1000) / pixelsPerSecond);
                if (time == 0) { segmentStep = 0; }
            if (segmentPos > ( 1 - segmentStep))
            {
                decay1SegmentIsRunning = false;
                sustainSegmentIsRunning = true;
                currentSegmentHeight = endPos / 100;
                ENV2Value = -endPos/100;
                segmentCounter = 0;
            }
        }//5. sustain segment
        if (sustainSegmentIsRunning == true)
        {
            curSegmentText.text = "sustain";
            ENV2Value = -decay1ValCB.value/100;
        }
    }
}

```

into code like this:

```auto

function ENVSegment(time:Number, startPos:Number, endPos:Number, currentSegment:Object, nextSegment:Objectl, segmentText:String)
{
    curSegmentText.text = segmentText;
    var segmentPos:Number = newCalc(time, startPos, endPos);
    segmentStep = 1 / ( (time * 1000) / pixelsPerSecond);
    if (time == 0) 
    { segmentStep = 0; }
    if (segmentPos >= ( 1 - segmentStep))
    {
        currentSegment = false;
        nextSegment = true;
        currentSegmentHeight = endPos / 100;
        ENV2Value = -endPos/100;
        segmentCounter = 0;
    }
}

function newENV2()
{
    var time:Number = 0;
    var startPos:Number = 0; 
    var endPos:Number = 0;
    var segmentPos:Number = 0;
    var segmentStep:Number = 0;
    
    if (ENV2IsRunning == true)
    { //1. attack1Segment
        if (attack1SegmentIsRunning == true)
        {
            ENVSegment(attack1TimeCB.value, 0, attack1ValCB.value, attack1SegmentIsRunning, attack2SegmentIsRunning, "attack1");
           }
if (attack2SegmentIsRunning == true)
{
ENVSegment(attack2TimeCB.value, attack1ValCB.value, attack2ValCB.value, attack2SegmentIsRunning, attack3SegmentIsRunning, "attack2");
}

etc... for a bunch of segments
}
}

```

much shorter, and easier to understand. also, less repetition of the same blocks of code over and over… thanks for the help. your New Thread textInput does not like fireFox3. can’t ecopy or select any of the text I type before posting, and the blinking position cursor never shows up, like with textEdit or other forums.

thanks

chuck
